Для записи в файл нам нужно создать объект класса 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\