Как создавать и выводить файлы в Java - PullRequest
0 голосов
/ 07 июня 2019

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

Я искал решения в StackOverflow и перепробовал много разных кусков кода, но все безрезультатно.Я попытался использовать BufferedWriter, PrintWriter, FileWriter, завернутый в try and catch и бросил IOExceptions, и, похоже, ничего из этого не работает.Для каждого поля, требующего путь, я попробовал как имя файла, так и имя файла в пути.Ничего не работает.

//I've tried so much I don't know what to show. Here is what remains in my method: 

FileWriter fw = new FileWriter("testFile.txt", false);
PrintWriter output = new PrintWriter(fw);
fw.write("Hello");

Я не получаю никаких ошибок, когда запускаю свой предыдущий код, однако файлы на самом деле не отображаются.Как я могу это исправить?Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 07 июня 2019

Есть несколько способов сделать это:

Запись с помощью BufferedWriter:

public void writeWithBufferedWriter() 
  throws IOException {
    String str = "Hello";
    BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
    writer.write(str);

    writer.close();
}

Если вы хотите добавить в файл:

public void appendUsingBufferedWritter() 
  throws IOException {
    String str = "World";
    BufferedWriter writer = new BufferedWriter(new FileWriter(fileName, true));
    writer.append(' ');
    writer.append(str);

    writer.close();
}

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

public void usingPrintWriteru() 
  throws IOException {
    FileWriter fileWriter = new FileWriter(fileName);
    PrintWriter printWriter = new PrintWriter(fileWriter);
    printWriter.print("Some String");
    printWriter.printf("Product name is %s and its price is %d $", "iPhone", 1000);
    printWriter.close();
}

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

public void usingFileOutputStream() 
  throws IOException {
    String str = "Hello";
    FileOutputStream outputStream = new FileOutputStream(fileName);
    byte[] strToBytes = str.getBytes();
    outputStream.write(strToBytes);

    outputStream.close();
}

Примечание:

  1. Если вы попытаетесь записать файл, который не существует, файл будет создан первым, и исключение не будет выдано.
  2. Очень важно закрыть поток после его использования, поскольку он не закрыт неявно, чтобы освободить любые ресурсы, связанные с ним.
  3. В выходном потоке метод close () вызывает flush () перед освобождением ресурсов, что заставляет записывать любые буферизованные байты в поток.

Источник и другие примеры: https://www.baeldung.com/java-write-to-file

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

1 голос
/ 07 июня 2019

Несколько вещей, которые стоит попробовать:

1) Если вы еще этого не сделали (это не в коде, который вы показали), убедитесь, что вы закрыли файл после того, как с ним покончено

2) Используйте файл вместо строки.Это позволит вам дважды проверить, где создается файл

File file = new File("testFile.txt");
System.out.println("I am creating the file at '" + file.getAbsolutePath() + "');
FileWriter fw = new FileWriter(file, false);
fw.write("Hello");
fw.close();

В качестве бонуса, попытка с ресурсом Java автоматически закроет ресурс, когда это будет сделано, вы можете попробовать

File file = new File("testFile.txt");
System.out.println("I am creating the file at '" + file.getAbsolutePath() + "');
try (FileWriter fw = new FileWriter(file, false)) {
    fw.write("Hello");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...