2012-02-21 2 views
-1

내 이전 question에서이어서 내 프로그램은 특정 디렉토리에서 방금 생성 된 300 개의 이미지를 감지하지 못합니다. 대신 실제로는 desktop.ini 만 감지합니다. 실제로 파일이 해당 디렉토리에서 생성되어 존재한다는 것을 실제로 볼 수 있기 때문에 그렇지 않습니다.Java - 파일을 검색 할 수 없습니다.

누군가 다음 번에 프로그램을 실행할 때 이런 일이 발생하는 이유를 설명해 주실 수 있습니까?

첫 번째 실행에서 디렉토리 내에서 무언가가 감지되는 유일한 방법은 프로그램이 컴파일되고 실행되기 전에 디렉토리에 하나 이상의 파일이있는 경우입니다.

감사합니다.

업데이트 : '? 얼마나 많은 새끼 고양이 지금 내 책상 아래에'다음과 같이 파일이 감지

당신은 이미지를 만드는 방법을 아는없이
//Default greyscale image directory (to convert from greyscale to binary). 
static File dirGrey = new File("test_images\\Greyscale"); 
//Array of greyscale image filenames. 
static File imgListGrey[] = dirGrey.listFiles(); 
+2

원래의 질문이나 여기에 없으면 파일을 정확히 "탐지"하는 방법을 설명했습니다. 의사 코드 "새 디렉토리 내의 모든 이미지에 대해"루프를 구현하는 방법은 무엇입니까? 코드를 보여주세요. –

+4

글쎄, 당신이 추가 한 코드는 아마 당신의 문제를 보여줍니다. 'static' 배열에 파일 목록을 만들 때 배열을 포함하는 클래스가 Java 클래스 로더에 의해로드 될 때 생성됩니다. 이것은 아마도 * 이미지 파일을 만들기 전 *입니다. –

+0

@ 주니어 감사합니다! 파일 목록을 메서드 자체로 옮겼습니다. 직접 응답으로 의견을 게시하는 경우 허용 된 답변으로 선택합니다. – MusTheDataGuy

답변

1

static 배열에 파일 목록을 만들면 배열을 포함하는 클래스가 이미지 파일을 만들기 전에 Java 클래스 로더에 의해로드 될 때 만들어집니다. 이것이 배열에 오래된 목록이 포함 된 이유입니다.

static은 거의 필요하지 않으며, 상수 (42와 같이 변경되지 않는 사항), 순수 함수 (Math.sqrt()) 및 기타 몇 가지 특별한 경우에 유용합니다. 그것을 사용할 때, 모든 까다로운 초기화 순서 물건을 배워야합니다. 그렇지 않으면 비 정적 변수를 사용하십시오.

2

,이 질문에 가깝다

파일을 직접 만드시겠습니까? 그렇다면 생성 된 파일을 참조하는 파일 핸들을 닫고 있습니까?

+0

이전 질문에서이 모든 것을 자세히 설명합니다. 그러나 특정 디렉토리 내의 모든 [이미지] 파일을 읽고 회색 음영으로 변환하여 다른 [비어있는] 디렉토리에 저장 한 다음 문제가있는 곳입니다. a) a) 프로그램을 두 번 실행하거나 b) 처음 실행하기 전에 디렉토리에 적어도 하나의 [image] 파일이없는 경우 새로 생성 된 이미지가 검색되지 않습니다 (이 경우 사전에 존재하는 이미지가 감지 됨). – MusTheDataGuy

+0

또한 'desktop.ini'가 'empty'디렉토리에서 발견 된 이유를 알고 싶습니다 ...? – MusTheDataGuy

+2

나는 그 질문이 잘못되었다고 생각한다. 자바에서 요구 사항을 충족시키지 못하는 * 코드입니다. JDK에 오류가있는 것처럼 질문을하면 소리가납니다. 귀하의 코드를 보지 않고, 나는 그렇지 않을 것이라고 확신합니다. 코드를 작성하고 Java의 작동 방식에 대한 이해가 문제가된다고 가정한다면 더 빨리 진행할 수 있습니다. – duffymo

관련 문제