#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 в путях.