2011-09-21 2 views
0

Java에서 아래와 같이 파일 객체를 만들려고 할 때 와일드 카드 문자를 사용하여 디렉토리를 지정할 수 있습니까? 이 경우 와일드 카드 문자로 지정된 디렉토리 내의 Java 파일 열기

File newFile = new File("\temp\*\path"); 

이 디렉토리는 내가 이름에 타임 스탬프를 박았에 대한 액세스 권한을 가지고 있지 않는 코드의 다른 부분에 의해 생성된다. 따라서 타임 스탬프 대신 *를 넣을 수 있다면 문제가 해결 될 것입니다.

File newFile = new File("\temp\dirname-*\path"); // * is timestamp when directory was created. 

감사합니다.

답변

1

프로그래머라면 "해당 위치에 단일 디렉토리가 존재한다고 확신합니다."와 같은 문구는 거짓이 될 때까지 true가 될 것이며 은 어느 시점에서이 거짓이 될 것입니다.

\temp\을 살펴보고 올바른 경로로 파일을 연 다음 하나의 디렉토리 만 있는지 확인하십시오. 그런 다음 전제 조건이 참이 아닌 경우 예외를 던지거나 메시지를 표시 할 수 있습니다.

+0

글쎄, 내 디렉토리를 실행하기 전에 다른 사람의 코드에 의해 만들어지는 것입니다. 또한 디렉터리를 만드는 첫 번째 청크가 성공적으로 실행되는 경우에만 내 코드를 실행할 수 있습니다. 따라서 디렉토리가 존재하고 임의의 디렉토리에 액세스하려고 시도하지 않았 음을 확신합니다. – rgamber

+0

@rgamber, 그럼 왜 '*'이 임의의 디렉토리가 아니라면 필요합니까? :) –

+0

@ AndreyAdamovich, 디렉터리 이름은 타임 스탬프를 기반으로합니다. 나는 창조 시간을 정확하게 추측 할 수 없다. 타임 스탬프가있는 위치에 와일드 카드를 넣을 수 있으면 문제가 해결되지만 나는이 질문에 대해 언급 했어야했다 !! – rgamber

0

아니요, Java에서는 파일 이름에 와일드 카드를 사용할 수 없습니다.

경로를 직접 해결해야하지만 어렵지 않습니다.

당신은 시작

new java.io.File("/tmp").listFiles(); 

흥미로운 장소를 찾을 수 있습니다.

1

설명대로 작성할 수 없습니다. 그러나 설명에 적합한 File을 검색하는 알고리즘을 작성할 수 있습니다. 귀하의 경우, 라는 파일에 대해 new File("temp")을 만들고 그 파일의 자식을 통해 재귀 적으로 검색 (isDirectory 메서드가 true를 반환하는 파일의 경우 listFiles 사용)하는 것이 좋습니다.

+0

제안 해 주셔서 감사합니다. – rgamber