Вопрос-ответ

How do I create a file and write to it?

Как мне создать файл и записать в него?
Переведено автоматически
Ответ 1

Обратите внимание, что каждый из приведенных ниже примеров кода может выдавать ошибку IOException. Блоки Try / catch / finally опущены для краткости. Смотрите Это руководство для получения информации об обработке исключений.

Обратите внимание, что каждый из приведенных ниже примеров кода перезапишет файл, если он уже существует

Создание текстового файла:

PrintWriter writer = new PrintWriter("the-file-name.txt", "UTF-8");
writer.println("The first line");
writer.println("The second line");
writer.close();

Создание двоичного файла:

byte data[] = ...
FileOutputStream out = new FileOutputStream("the-file-name");
out.write(data);
out.close();

Java 7+ пользователи могут использовать Files класс для записи в файлы:

Создание текстового файла:

List<String> lines = Arrays.asList("The first line", "The second line");
Path file = Paths.get("the-file-name.txt");
Files.write(file, lines, StandardCharsets.UTF_8);
//Files.write(file, lines, StandardCharsets.UTF_8, StandardOpenOption.APPEND);

Создание двоичного файла:

byte data[] = ...
Path file = Paths.get("the-file-name");
Files.write(file, data);
//Files.write(file, data, StandardOpenOption.APPEND);
Ответ 2

В Java 7 и выше:

try (Writer writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("filename.txt"), "utf-8"))) {
writer.write("something");
}

Хотя для этого есть полезные утилиты:

Обратите также внимание, что вы можете использовать a FileWriter, но при этом используется кодировка по умолчанию, что часто является плохой идеей - лучше указывать кодировку явно.

Ниже приведен оригинальный ответ, предшествующий Java 7


Writer writer = null;

try {
writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("filename.txt"), "utf-8"));
writer.write("Something");
} catch (IOException ex) {
// Report
} finally {
try {writer.close();} catch (Exception ex) {/*ignore*/}
}

Смотрите также: Чтение, запись и создание файлов (включая NIO2).

Ответ 3

Java NIO

Если у вас уже есть содержимое, которое вы хотите записать в файл (а не сгенерированное "на лету"), то java.nio.file.Files добавление в Java 7 как части Java NIO обеспечивает самый простой и эффективный способ достижения ваших целей.

По сути, создание и запись в файл - это всего одна строка, более того, один простой вызов метода!

В следующем примере создается и выполняется запись в 6 разных файлов, чтобы продемонстрировать, как это можно использовать:

Charset utf8 = StandardCharsets.UTF_8;
List<String> lines = Arrays.asList("1st line", "2nd line");
byte[] data = {1, 2, 3, 4, 5};

try {
Files.write(Paths.get("file1.bin"), data);
Files.write(Paths.get("file2.bin"), data,
StandardOpenOption.CREATE, StandardOpenOption.APPEND);
Files.write(Paths.get("file3.txt"), "content".getBytes());
Files.write(Paths.get("file4.txt"), "content".getBytes(utf8));
Files.write(Paths.get("file5.txt"), lines, utf8);
Files.write(Paths.get("file6.txt"), lines, utf8,
StandardOpenOption.CREATE, StandardOpenOption.APPEND);
} catch (IOException e) {
e.printStackTrace();
}

При пропуске OpenOption аргументов по умолчанию используется комбинация StandardOpenOption.CREATE, StandardOpenOption.WRITE и StandardOpenOption.TRUNCATE_EXISTING. Смотрите обсуждение этого ответа.

Ответ 4
public class Program {
public static void main(String[] args) {
String text = "Hello world";
BufferedWriter output = null;
try {
File file = new File("example.txt");
output = new BufferedWriter(new FileWriter(file));
output.write(text);
} catch ( IOException e ) {
e.printStackTrace();
} finally {
if ( output != null ) {
try {
output.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
}
}
java