В Java у меня есть текст из текстового поля в строковой переменной с именем «текст».
Как я могу сохранить содержимое переменной «text» в файл?
java
file
file-io
text-files
Джастин Уайт
источник
источник
Apache Commons IO содержит несколько отличных методов для этого, в частности FileUtils содержит следующий метод:
который позволяет записывать текст в файл одним вызовом метода:
Вы также можете рассмотреть возможность указания кодировки для файла.
источник
FileUtils.writeStringToFile(new File("test.txt"), "Hello File", forName("UTF-8"));
Посмотрите на Java File API
быстрый пример:
источник
@Cleanup new FileOutputStream(...)
и готово.В Java 7 вы можете сделать это:
Больше информации здесь: http://www.drdobbs.com/jvm/java-se-7-new-file-io/231600403
источник
content.getBytes(StandardCharsets.UTF_8)
может использоваться для явного определения кодировки.Просто сделал что-то похожее в моем проекте. Использование FileWriter упростит часть вашей работы. И здесь вы можете найти хороший учебник .
источник
.close()
не выдает (по крайней мере, в Java 7?), Является ли последний trycatch возможно избыточным?throw new RuntimeException(e);
Используйте
FileUtils.writeStringToFile()
от Apache Commons IO . Не нужно изобретать это колесо.источник
Вы можете использовать модифицированный код ниже, чтобы написать свой файл из любого класса или функции, обрабатывающей текст. Интересно, почему миру нужен новый текстовый редактор ...
источник
В Java 11
java.nio.file.Files
класс был продлен на два новых служебных методов , чтобы записать строку в файл. Первый метод (см. JavaDoc здесь ) использует кодировку UTF-8 по умолчанию:И второй метод (см. JavaDoc здесь ) позволяет указать отдельную кодировку:
Оба метода имеют необязательный параметр Varargs для настройки параметров обработки файлов (см. JavaDoc здесь ). В следующем примере будет создан несуществующий файл или добавлена строка к существующему:
источник
Я предпочитаю полагаться на библиотеки, когда это возможно, для такого рода операций. Это снижает вероятность того, что я случайно пропущу важный шаг (например, ошибку, сделанную выше). Некоторые библиотеки предложены выше, но мой фаворит для такого рода вещей - Google Guava . У Guava есть класс Files, который отлично подходит для этой задачи:
источник
Charsets.UTF-8
.Charsets.UTF_8
самом делеFiles.asCharSink(file, charset).write(text)
Используйте Apache Commons IO api. Это просто
Использовать API как
Maven Dependency
источник
В случае, если вам нужно создать текстовый файл на основе одной строки:
источник
Используйте это, это очень читабельно:
источник
Вы можете вставить этот метод в ваши классы. Если вы используете этот метод в классе с методом main, измените этот класс на статический, добавив ключевое слово static. В любом случае вам нужно будет импортировать java.io. *, чтобы он работал, иначе File, FileWriter и BufferedWriter не будут распознаны.
источник
Вы могли бы сделать это:
источник
Использование
Java 7
:источник
Files.write(targetPath, bytes);
чтобы перезаписать файл тогда. Это будет работать как ожидалось.Использование org.apache.commons.io.FileUtils:
источник
Если вам нужно только вставить один блок текста в файл, это будет перезаписывать его каждый раз.
Этот пример позволяет пользователю выбрать файл с помощью средства выбора файлов.
источник
Лучше закрыть писатель / выходной поток в блоке finally, на случай, если что-то случится
источник
}
источник
Я думаю, что лучше всего использовать
Files.write(Path path, Iterable<? extends CharSequence> lines, OpenOption... options)
:Смотри Javadoc :
Пожалуйста, обратите внимание. Я вижу, что люди уже ответили с помощью встроенного в Java
Files.write
, но что особенного в моем ответе, который, кажется, никто не упоминает, это перегруженная версия метода, который принимает Iterable CharSequence (т.е. String) вместоbyte[]
массива, поэтомуtext.getBytes()
не требуется , который немного чище, я думаю.источник
Если вы хотите сохранить символы возврата каретки из строки в файл, вот пример кода:
источник
Мой путь основан на потоке, потому что он работает на всех версиях Android и требует много ресурсов, таких как URL / URI, любые предложения приветствуются.
Что касается этого, потоки (InputStream и OutputStream) передают двоичные данные, когда разработчик собирается записать строку в поток, сначала должен преобразовать ее в байты или, другими словами, кодировать ее.
источник
Вы можете использовать ArrayList, чтобы поместить все содержимое TextArea в качестве примера, и отправить в качестве параметра, вызвав save, так как писатель только что записал строковые строки, а затем мы будем использовать строку «для» построчно, чтобы написать наш ArrayList в конце мы будем содержимое TextArea в текстовом файле. если что-то не имеет смысла, извините, Google переводчик и я, кто не говорит по-английски.
Посмотрите Блокнот Windows, он не всегда пересекает строки и показывает все в одной строке, используйте Wordpad нормально.
источник