2013-11-21 3 views
0

큰 코드 조각에 기능을 추가하려고하는데 파일 구분 기호에 이상한 문제가 있습니다. 다음 코드에서 파일을 읽을 때 내 PC에서 작동하지만 Linux 서버에서는 실패합니다. PC에 나는이를 통과하고 그것을 작동하는 경우 :File.separator가 잘못된 문자를 사용하는 이유는 무엇입니까?

fileName = "C:\\Test\\Test.txt"; 

하지만 서버에 내가 이것을 통과 얻을 때 "파일을 찾을 수 없음"으로 인해 "\"에 대한 "/"스왑 아래의 BufferedReader /을 FileReader 문 :

찾을 수 없음

fileName: /opt/Test/Test.txt 

파일 : java.io.FileNotFoundException : \ 옵트 \ 테스트 \ TEST.TXT (시스템 리눅스 서버에서 실행할 때

fileName = "/opt/Test/Test.txt"; 
System.out.println("fileName: "+fileName); 
reader = new BufferedReader(new FileReader(new File(fileName))); 

이 출력을 생성합니다 지정된 경로를) 찾을 수 없습니다

나는 시도하고 켜져있는 것처럼의 BufferedReader /을 FileReader 라인은 행동의 원인이되는, 그것은 예상 다르게 동작으로 더 큰 코드 소스에 이렇게 뭔가를 복제하는 간단한 Test.java 파일을 만들 때 리눅스 박스가 아닌 PC. 그게 어떤 아이디어일까요?

답변

1

File.separator를 어디에 사용했는지는 알 수 없습니다. 경로 구분 기호를 하드 코딩하는 대신이 방법을 사용해보십시오. 기본 디렉토리는 I fileName에 = fileName.replace 시도 설정 파일 ("/", Win32 시스템) 및 그 교체 "/"와 "읽기 때문에

fileName = File.separator + "opt" + File.separator + "Test" + File.separator + "Test.txt"; 
+0

나는 것을 ... 또는 오히려 시도 \ "리눅스 서버에서 잘못되었습니다. 비록 그것없이, BufferedReader/FileReader 작업은 파일을 찾기 위해 시도하기 전에 적절한 구분 기호로 파일을 가져 와서 "\"로 바꾸는 것으로 보이고 구분 기호가 잘못되어 실패합니다. – user2137130

+0

웹 시작 클라이언트로 코드를 실행 중이므로 PC에서 클라이언트를 실행하고 있으므로 "\"가 올바른 파일 구분 기호이기 때문에 이것이 나타납니다. 서버의 파일에 액세스하려고 시도하고 있으므로 그렇게 정의 된 메서드를 통해 수행해야합니다. – user2137130

관련 문제