Java 具有绝对路径的 FileNotFoundException - 无法读取或执行,但文件存在
Java FileNotFoundException with Absolute path - Cant Read or Execute, but file exists
我确定这个问题已经得到解答,但是十种不同的策略都没有解决这个问题。
如果我使用 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()));
编辑
将反斜杠替换为正斜杠后,reader 仍然无法正确读取或执行文件。
日志:
字符串打印:
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)
正确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";
被java读为
"C:{something}sers{something}nny{something}ropbox{something}ocialMediaOcto{something}nstructions\Trees\instructions.txt"
在我看来,使用第一种方法要好得多,因为它是平台安全的。
我确定这个问题已经得到解答,但是十种不同的策略都没有解决这个问题。
如果我使用 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()));
编辑 将反斜杠替换为正斜杠后,reader 仍然无法正确读取或执行文件。
日志: 字符串打印: 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)
正确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";
被java读为
"C:{something}sers{something}nny{something}ropbox{something}ocialMediaOcto{something}nstructions\Trees\instructions.txt"
在我看来,使用第一种方法要好得多,因为它是平台安全的。