Java — как мне записать файл в указанный каталог

#java #file #directory #bufferedwriter

#java #файл #каталог #bufferedwriter

Вопрос:

Я хочу записать файл results.txt в определенный каталог на моем компьютере (Z:results если быть точным). Как мне указать каталог в BufferedWriter / FileWriter?

В настоящее время он успешно записывает файл, но в каталог, где находится мой исходный код. Спасибо

     public void writefile(){

    try{
        Writer output = null;
        File file = new File("results.txt");
        output = new BufferedWriter(new FileWriter(file));

        for(int i=0; i<100; i  ){
           //CODE TO FETCH RESULTS AND WRITE FILE
        }

        output.close();
        System.out.println("File has been written");

    }catch(Exception e){
        System.out.println("Could not create file");
    }
}
  

Ответ №1:

Вы должны использовать вторичный конструктор for File , чтобы указать каталог, в котором он должен быть символически создан. Это важно, потому что ответы, в которых говорится о создании файла путем добавления имени каталога к исходному имени, не так независимы от системы, как этот метод.

Пример кода:

 String dirName = /* something to pull specified dir from input */;

String fileName = "test.txt";
File dir = new File (dirName);
File actualFile = new File (dir, fileName);

/* rest is the same */
  

Надеюсь, это поможет.

Комментарии:

1. Либо это, либо использовать System.getProperty("file.separator")

Ответ №2:

Использовать:

 File file = new File("Z:\results\results.txt");
  

Вам нужно удвоить обратную косую черту в Windows, потому что символ обратной косой черты сам по себе является escape в строках литералов Java.

Для системы POSIX, такой как Linux, просто используйте путь к файлу по умолчанию, не удваивая косую черту. это потому, что косая черта не является escape-символом в Java.

 File file = new File("/home/userName/Documents/results.txt");
  

Комментарии:

1. Не рекомендуется, программа будет привязана к ОС. Следуйте вторичному конструктору, как описано в другом ответе.

Ответ №3:

Просто укажите полное местоположение каталога в объекте File.

 File file = new File("z:\results.txt");
  

Комментарии:

1. На самом деле вам нужно экранировать обратную косую черту: File файл = новый файл(«z:\results.txt «); Или просто используйте обычный файл с косой чертой file = new File(«z:/results.txt «);

Ответ №4:

Наилучшей практикой является использование File.separator в путях.