2012-04-26 2 views
6

난 그냥 몇 가지 자바 책을 읽고 실천에 대한 몇 가지 작은 프로그램을 만들고 있었다, 나는 내가 입력 한 경로에 대한 정보를 얻을 수있는 작은 코드를 생성하고, 코드는 다음과 같습니다차이/

String path = JOptionPane.showInputDialog("Enter Path to analyze"); 

File file = new File(path); 

if (file.exists()) 
{ 
    String result = ""; 
    if (file.isDirectory()) 
    { 
     result += "Path is directory\n "; 
     String [] resList = file.list(); 

     for (String s : resList) 
     { 
      result += s + ", "; 
     } 
    } 
    if (file.isFile()) 
    { 
     result += "Path is a file\n"; 
    } 

    JOptionPane.showMessageDialog(null, result); 
내가 C: 입력 할 때

지금 입력 대화, 결과는 build, build.xml, manifest.mf, nbproject, src이지만, 나는 C를 입력 할 때 : /, 그것은

C.

의 디렉토리와 파일의 전체 목록을 보여줍니다 그리고 이상하게도 그것은으로 발생하지 않습니다 D 드라이브 및 다른 드라이브 (결과는 D :/D와 동일합니다.) 무슨 일이 일어나는지 설명하십시오.

업데이트 동일하게 C#을 사용하여 WPF에서 발생합니다!

+5

Hehe, Windows는 재미 있습니다 :) –

+0

원하는 결과는 무엇입니까? 정말로 원하는 결과에 따라 경로에서'/'를 제거하거나 제거하십시오. –

+0

없음 원하는 결과는, 난 그냥 연습 – SpeedBirdNine

답변

9

C:은 "드라이브 C:에서 현재 선택된 디렉토리"를 의미합니다. 귀하의 경우에는 응용 프로그램이 실행되고있는 디렉토리 일 것입니다. 루트 디렉토리 D:의 현재 작업 디렉토리이기 때문에

D:는 귀하의 경우 D:/과 동일합니다.

+2

Windows는 모든 드라이브에서 CWD를 개별적으로 추적하고 그 외에도 현재 작업중인 드라이브를 추적합니다. 이 둘의 조합은 여러분이 * nix에서 CWD로 알고있는 것입니다. –

+0

@Marko : 예, 방금 cmd.exe를 체크인하고 주목했습니다. 감사! –

+0

예, C :의 경우 결과가 프로젝트 폴더의 파일과 폴더와 정확히 일치하므로 실제로 프로젝트가 실행되는 현재 디렉토리입니다! 한 의견은 Windows 7에서이 동작을 반복 할 수 없다고 말했기 때문에 (아마도이 ​​주석은 제거되었을 것입니다) 아마도 Windows Vista에만 해당 될 것입니다. 다른 Windows 버전을 확인하지 않았습니다. – SpeedBirdNine

3

이것은 실제로 자바 질문이 아니지만 windows/dos 질문입니다.

드라이브를 전환하기위한 이전 dos 명령에 대한 설명이 나와 있습니다.

드라이브 문자를 입력 할 때 콜론을 입력하면 드라이브가 변경되므로 명령 'C:'은 작업 디렉토리가 이미 C 드라이브에 있으므로 아무 작업도 수행하지 않습니다. JRE에 대한 네이티브 인터페이스에 의해 리턴 된 '디렉토리'는 경로 "", 즉 작업 디렉토리를 사용한 경우와 같습니다. 한편

는 슬래시를 추가하고 그러므로 당신의 JRE가 기본 인터페이스로이 디렉토리 주어, C 드라이브의 루트에, 적절한 경로입니다.

dos 명령 (windows> run> cmd)으로 이동하여 C:을 입력하면 명령을 수락하지만 디렉토리가 변경되지 않는 것을 볼 수 있습니다. 물론 현재 그 시간에 다른 드라이브에 있지 않은 경우입니다.

희망이 도움이됩니다.