2016-09-02 4 views
0

이 문제가 해결되었지만 10 가지 전략이이 문제에 영향을 미치지 않았습니다.Java FileNotFoundException 절대 경로 포함 - 읽기 또는 실행이지만 파일이 존재 함

C : \ Users \ Anny \ Dropbox \ SocialMediaOcto \ instructions \ Trees \ instructions.txt 파일의 절대 경로로 을 사용하는 경우 IDEA는이 경로에서 읽거나 실행할 수 없습니다. 동일한 경로를 사용하여 Windows 탐색기에 붙여 넣으면 바로 실행됩니다. 이 파일은 프로그램의 설정 파일처럼 작동하지만, 슬래시를 백 슬래시로 바꾸지 않으면 절대 경로가 파일로 옮겨 지지만 IDEA는 실행되지 않습니다.

나는 재치가있다.

public static String generateFileName(String folder){ 

    String filename = ""; 
    List<String> hashtags = new ArrayList<>(); 
    String instructions_file =   "C:\Users\Anny\Dropbox\SocialMediaOcto\instructions\Trees\instructions.txt"; 

    //does not return true-true, but can launch file on windows explorer.. 
    System.out.println("FILE EXIST AND EXECUTE?" + new File(instructions_file).getAbsoluteFile().canRead() +" "+new File(instructions_file).getAbsoluteFile().canExecute()); 

    System.out.println(new File(instructions_file).getAbsoluteFile()); 
    //C:\Users\Anny\Dropbox\SocialMediaOcto\instructions\Trees\instructions.txt 

    BufferedReader br = null; 

    try { 

     String sCurrentLine; 

     br = new BufferedReader(new FileReader(new File(instructions_file).getAbsoluteFile())); 

EDIT 슬래시와 슬래시를 교체 한 후에, 독자는 여전히 정상적으로 판독 또는 파일을 실행할 수 없다.

LOG : 문자열 인쇄 : C : /Users/Anny/Dropbox/SocialMediaOcto/instructions/Bees/instructions.txt

java.io.FileNotFoundException: C:\Users\Anny\Dropbox\SocialMediaOcto\instructions\Bees\instructions.txt (The system cannot find the file specified) 
+2

이중 블랙 슬래시로 백 슬래시를 벗어나야합니다. 나는이 코드가 컴파일 에러를 내야한다고 생각한다. – Jens

+1

자바에서는 두 개의 백 슬래시가 필요하다. 문자열 instructions_file = "C : \\ Users \ Anny \\ Dropbox \\ SocialMediaOcto \\ instructions \\ Trees \\ instructions.txt"; –

+0

https://docs.oracle.com/javase/tutorial/essential/io/pathOps.html –

답변

5

올바른 URL :

String instructions_file = "C:/Users/Anny/Dropbox/SocialMediaOcto/instructions/Trees/instructions.txt"; 

때문에 \은 Java에서 이스케이프 문자입니다. 문자로 \을 사용하려면 이스케이프 처리해야합니다.

URL의 올바른 V2 :

String instructions_file = "C:\\Users\\Anny\\Dropbox\\SocialMediaOcto\\instructions\\Trees\\instructions.txt"; 

당신이 가지고 무엇 :

String instructions_file = "C:\Users\Anny\Dropbox\SocialMediaOcto\instructions\Trees\instructions.txt"; 

은 (는) 첫 번째를 사용하는 것이 훨씬 낫다 내 oppinion에서

"C:{something}sers{something}nny{something}ropbox{something}ocialMediaOcto{something}nstructions\Trees\instructions.txt" 

으로 자바 읽 플랫폼 안전성으로 접근합니다.

+0

나는 \\뿐만 아니라 그것을 구축하고 있다고 생각하지만, 나는 이것에 대해 연구 할 것이다. 감사. – Jayizzle

+1

@Jayizzle은 슬래시를 사용하는 것이 훨씬 더 좋은 방법입니다! 플랫폼 안전합니다. 일부 운영 체제에서는 백 슬래시 사용이 작동하지 않을 수 있습니다. 이 답을 찾은 경우 점수 아래에있는 회색 눈금을 클릭하여 해결책으로 표시하십시오. – xenteros

+0

잠깐, 아니, 잘 작동하지 않았다. 그것은 여전히 ​​같은 오류를 던지고있다. – Jayizzle

관련 문제