2012-02-05 6 views
5

파일을 복사하는 간단한 tcp 클라이언트/서버 응용 프로그램을 작성하려고합니다. 나는 서버가 클라이언트가 복사 할 수있는 파일을 나열하길 원한다.실행중인 java 파일의 현재 경로 얻기

import java.io.*; 
public class GetFileList 
{ 
    public static void main(String args[]) throws IOException{ 
     File file = new File("."); 
     File[] files = file.listFiles(); 
     System.out.println("Current dir : " + file.getCanonicalPath()); 
     for (int fileInList = 0; fileInList < files.length; fileInList++) 
     { 
      System.out.println(files[fileInList].toString()); 
     } 
    } 
} 

출력 : 내 코드는 지금까지입니다

Current dir : C:\Users\XXXXX\Documents\NetBeansProjects\Test 
.\build 
.\build.xml 
.\manifest.mf 
.\nbproject 
.\src 
.\UsersXXXXXDocumentsNetBeansProjectsTestsrcfile2.txt 

내 문제가 나에게 대신 현재 디렉토리의 상위 디렉토리를주고 있다는 점이다. 내 GetFileList.java는 C:\Users\XXXXX\Documents\NetBeansProjects\Test\src에 있지만 C:\Users\Alick\Documents\NetBeansProjects\Test을 표시합니다. 누구든지 해결하도록 도울 수 있습니까?

+0

실행 -이

당신은 넷빈즈 당신이 프로젝트 속성에서 작업 디렉토리로 디렉토리를 지정할 수있는 특정 디렉토리에서 프로그램을 실행하려면 예배 규칙서?!? 그들에게'JFileChooser' (기본값은'user.home')을 제공하고 거기서 가져 가게하십시오. BTW - 코드 들여 쓰기가 그렇게 비참하지 않게하고 논리적이고 일관된 시스템을 사용하십시오. –

답변

3

코드가 올바르게 작동합니다. 소스 파일의 위치를 ​​알려주지는 않습니다. 프로그램이 실행중인 현재 디렉토리를 제공합니다.

저는 IDE에서 프로그램을 실행 중이므로이 경우 현재 디렉토리가 프로젝트의 루트 디렉토리라고 생각합니다.

new File("src").listFiles()을 호출하여 프로젝트 src 디렉토리를 나열 할 수 있지만 실제로는 필요하지 않다고 생각합니다. 프로그램을 컴파일하고 패키지하면 소스 및 소스 디렉토리를 사용할 수 없습니다.

사용자에게 몇 가지 디렉토리 구조를 표시하려면 프로그램이 매개 변수로 루트 디렉토리를 가져야한다고 생각합니다.

java -cp YOUR-CLASSPATH MyClass c:/root

그래서, c:\root 아래에있는 모든 파일을 사용할 수있는 바와 같이, 예를 들어, 당신은 프로그램을 실행해야합니다.

+0

O 문제가 있습니다. cmd에서 실행했는데 정확합니다. 설명 주셔서 감사합니다! – Dan

0

보다는 파일 파일 = 새 파일 ("."); 절대 경로를 사용하십시오. 특정 디렉토리에서 사용자 시작 프로그램을 사용할 수 없습니다. > 왜 지구에 최종 사용자가 응용 프로그램의 자신에 파일을 업로드 할 것

관련 문제