Java - как мне записать файл в указанный каталог - PullRequest
28 голосов
/ 27 апреля 2011

Я хочу записать файл 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");
    }
}

Ответы [ 4 ]

35 голосов
/ 27 апреля 2011

Вы должны использовать вторичный конструктор для 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 */

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

26 голосов
/ 27 апреля 2011

Использование:

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

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

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

File file = new File("/home/userName/Documents/results.txt");
4 голосов
/ 27 апреля 2011

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

File file = new File("z:\\results.txt");
1 голос
/ 05 февраля 2019

Рекомендуется использовать File.separator в путях.

...