2012-08-06 2 views
3

Java에서이 오류가 왜 반환됩니까?UNC 경로 .exists()가 거짓을 반환합니다.

new File("\\\\10.10.1.4").exists() 

하지만

new File("\\\\10.10.1.4\\dir").exists() 

true를 반환합니다. 내가 Windows 탐색기에서 ('디렉토리'없이) 첫 번째 주소를 열면

나는 그래서 난 창문이 잘

같은 일이 함께 발생 볼 수 있기 때문에이 권한 문제 생각하지 않는 내용을 볼 File.listFiles(). 첫 번째 주소는 null을 반환하지만 두 번째 주소는 실제 내용을 반환합니다.

마지막으로 다른 모든 방법이 실패하면 UNC 주소 (디렉터리가없는 IP)가 있는지 테스트하고 그 내용을 나열하는 다른 방법이 있습니까?

답변

3

\\10.10.1.4은 공유 참조가 아닌 주소이며 마운트 된 파일 시스템을 가리 키지 않습니다. \\10.10.1.4\dir은 마운트 된 파일 시스템 인 공유 지점을 가리 킵니다.

나는 거리 주소로 편지를 보내고 싶지만 집 번호를 남기는 것과 같을 것입니다 ... 그것은 파생 될 수있는 맥락이 아닙니다. 여기도 마찬가지입니다. Java는 \\10.10.14File으로 표시하지 않으므로 존재하지 않습니다 (File의 컨텍스트에서)

+1

10.10.1.4의 내용을 어떻게 나열 할 수 있습니까? 그때? 나는 단지 'dir'이 없기 때문에 전체 트리를 가로 질러 갈 필요가있다. 나는 10.10.1.4 아래 모든 것을 볼 필요가있다. 후행 슬래시도 작동하지 않습니다 – Hilikus

+0

또한, 나는 당신의 비유에 동의하지 않는다고 생각합니다. 필자가 "\\ 10.10.1."을 열려고했다면 불완전한 주소 일 것입니다. \\ 10.10.1.4는 단일 장치로 해석되는 완전한 모호하지 않은 주소입니다. \\ 10.10.1.4 \ dir \이 10.10.1.4에있는 'dir'의 내용을 나열하면 \\ 10.10.1.4가 장치 공유의 루트 내용을 나열하지 않는 이유는 무엇입니까? C : \는 유효한 경로가 아니기 때문에 디렉토리에 dir이 있으므로 C : \ dir을 시도해야합니다. – Hilikus

+1

@Hilikus \\ 10.10.1.4 루트 장치가 아니며 File.listRoots와 함께 표시되지 않습니다. , 그것은 공유 지점을 제공하는 서비스입니다. 당신은 http://stackoverflow.com/questions/8480622/shares-under-ip을 살펴볼 수있다. – MadProgrammer

2

파일 ("\\ 10.10.1.4")이 존재하지 않습니다.

파일 ("\\ 10.10.1.4 \")이 원인 일 수 있습니다.

브라우저/탐색기가 자동으로 백 슬래시를 추가하므로 그 내용이 표시됩니다.

+0

후행 슬래시를 시도했는데 차이가 없습니다. – Hilikus

관련 문제