
Для записи в файл нам нужно создать объект класса FileOutputStream, который будет представлять выходной поток.
// Create a file output stream String destFile = "test.txt"; FileOutputStream fos = new FileOutputStream(destFile);
При записи в файл Java пытается создать файл, если он не существует. Мы должны быть готовы обработать это исключение, поместив код в блок try-catch, как показано ниже:
try {
FileOutputStream fos = new FileOutputStream(srcFile);
}catch (FileNotFoundException e){
// Error handling code goes here
}
Если файл содержит данные, данные будут удалены. Чтобы сохранить существующие данные и добавить новые данные в файл, нам нужно использовать другой конструктор класса FileOutputStream, который принимает логический флаг для добавления новых данных в файл.
Чтобы добавить данные в файл, передайте true во втором аргументе, используйте следующий код.
FileOutputStream fos = new FileOutputStream(destFile, true);
Запись данных
Класс FileOutputStream имеет перегруженный метод write() для записи данных в файл. Мы можем записывать один байт или несколько байтов за раз, используя разные версии этого метода.
Обычно мы записываем двоичные данные с помощью FileOutputStream.
Чтобы записать строку, такую как «Hello», в выходной поток, преобразуйте строку в байты.
Класс String имеет метод getBytes(), который возвращает массив байтов, представляющий строку. Мы записываем строку в FileOutputStream следующим образом:
String text = "Hello"; byte[] textBytes = text.getBytes(); fos.write(textBytes);
Чтобы вставить новую строку, используйте системную переменную line.separator следующим образом.
String lineSeparator = System.getProperty("line.separator");
fos.write(lineSeparator.getBytes());
Нам нужно очистить выходной поток с помощью метода flush().
fos.flush();
Сброс выходного потока указывает, что если какие-либо записанные байты были буферизованы, они могут быть записаны в приемник данных.
Закрытие выходного потока аналогично закрытию входного потока. Нам нужно закрыть выходной поток, используя его метод close().
// Close the output stream fos.close();
Метод close() может вызвать исключение IOException. Используйте попытку с ресурсами для создания выходного потока, если мы хотим, чтобы он закрывался автоматически.
В следующем коде показано, как записывать байты в поток вывода файлов.
import java.io.File;
import java.io.FileOutputStream;
//from www .java 2 s . c o m
public class Main {
public static void main(String[] args) {
String destFile = "luci2.txt";
// Get the line separator for the current platform
String lineSeparator = System.getProperty("line.separator");
String line1 = "test";
String line2 = "test1";
String line3 = "test2";
String line4 = "test3";
try (FileOutputStream fos = new FileOutputStream(destFile)) {
fos.write(line1.getBytes());
fos.write(lineSeparator.getBytes());
fos.write(line2.getBytes());
fos.write(lineSeparator.getBytes());
fos.write(line3.getBytes());
fos.write(lineSeparator.getBytes());
fos.write(line4.getBytes());
// Flush the written bytes to the file
fos.flush();
System.out.println("Text has been written to "
+ (new File(destFile)).getAbsolutePath());
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
Приведенный выше код генерирует следующий результат.
Text has been writen to E;\Java_Dev\WEB\release\java2sIDE\generated\a\