Написать текстовый файл не работает Java - PullRequest
0 голосов
/ 07 июня 2018

Это моя архитектура проекта:

Архитектура проекта

Я хочу написать в файле "file.txt", я пытался с BufferedWriter и PrintWriter , но он не работает без ошибок.

Мой код с BufferedWriter:

ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("FileTLV.txt").getFile());
    try{

        BufferedWriter writer = new BufferedWriter(new FileWriter(file));
        writer.write("I want to write a String");
        writer.close();

    }catch (IOException e) {
        e.printStackTrace();
    }

ИМой код с PrintWriter:

    ClassLoader classLoader = getClass().getClassLoader();
    File file = new File(classLoader.getResource("FileTLV.txt").getFile());
    try{

        PrintWriter writer = new PrintWriter(new FileWriter(file));
        writer.print("I want to print a String");
        writer.flush();
        writer.close();

    }catch (IOException e) {
        e.printStackTrace();
    }

Код выполняется без ошибок.

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Ресурсы приложения доступны только для чтения.Вы не можете писать в них.

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

Кроме того, метод getFile () URL не преобразовывает URL-адрес в действительныйимя файла.Он возвращает пути и части запроса URL-адреса со всеми процентами-выходами без изменений, поэтому, если вы работаете из каталога или .jar, полный путь которого содержит любые символы, которые не разрешены в URL-адресах, результат не будет использоваться.Метод следует избегать.(Название метода происходит от того факта, что java.net.URL был классом, присутствующим в Java 1.0, и когда Java 1.0 была выпущена, большинство URL действительно ссылались на физические файлы.)

0 голосов
/ 07 июня 2018

Просто используйте Файлы .write из java.nio (Java 7 +)

Вот пример:

List<String> lines = Arrays.asList("line1", "line2");
Path file = Paths.get("filename.txt");
Files.write(file, lines, Charset.forName("UTF-8"));

И что действительно приятно:

"Этот метод гарантирует, что файл будет закрыт, когда все байты были записаны (или возникла ошибка ввода-вывода или другое исключение времени выполнения)."

Files.write(filePathObj, content, StandardOpenOption.APPEND);

позволяетдобавить файл (взгляните на различные OpenOptions )

В общем, Files.nio действительно полезен и для чтения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...