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