Java FileNotFoundException с абсолютным путем - не удается прочитать или выполнить, но файл существует

Я уверен, что на это ответили, но десять разных стратегий не сработали в этом вопросе.

Если в качестве абсолютного пути к файлу я использую C:\Users\Anny\Dropbox\SocialMediaOcto\instruments\Trees\ инструкция.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()));

РЕДАКТИРОВАТЬ После замены обратной косой черты на прямую, читатель все еще не может правильно прочитать или выполнить файл.

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)

1 ответ

Решение

Правильный URL:

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

Так как \ является escape-символом в 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"

По моему мнению, гораздо лучше использовать первый подход, поскольку он безопасен для платформы.

Другие вопросы по тегам