鍍金池/ 教程/ Java/ Java FileOutputStream
Java文件屬性
Java FilePermission示例
Java Externalizable實例
Java文件操作
Java文件鎖
Java文件系統(tǒng)
Java異步I/O
Java Reader/Writer
Java File實例
Java FileReader示例
Java控制臺
Java文件所有者權限
Java通道
Java ByteArrayOutputStream示例
BufferedOutputStream示例
Java FileInputStream示例
Java DataInputStream
Java BufferedInputStream
Java Jar Manifest
Java Console類示例
BufferedWriter示例
Java輸入/輸出教程
Java對象序列化
Java文件教程
Java DataInputStream類型
Java Zip字節(jié)數(shù)組
Java FileWriter示例
FileOutputStream示例
Java PrintStream
Java Scanner類
BufferedInputStream示例
Java字符集
ByteArrayInputStream示例
Java路徑操作
Java DataOutputStream
Java符號鏈接
Java FilterWriter示例
Java Jar API
BufferedReader實例
Java Pipe(管道)
Java jar文件
Java CharArrayReader示例
Java CharArrayWriter示例
Java PushbackInputStream
Java FilterReader示例
Java zip文件
Java InputStream
Java標準輸入/輸出/錯誤流
Java文件內(nèi)容和讀寫
Java FilterInputStream示例
Java內(nèi)存通道
Java路徑
Java令牌和字符串拆分
Java隨機訪問文件
Java文件樹
Java緩沖區(qū)讀寫
Java FileOutputStream
Java目錄事件
Java FilterOutputStream示例
Java DataOutputStream實例
FileDescriptor示例

Java FileOutputStream

創(chuàng)建輸出流

要寫入文件,需要創(chuàng)建一個FileOutputStream類的對象,它將表示輸出流。

// Create a  file  output stream
String destFile = "test.txt";
FileOutputStream fos   = new FileOutputStream(destFile);

當寫入文件時,如果文件不存在,Java會嘗試創(chuàng)建文件。但必須要處理這個異常,將代碼放在try-catch塊中,如下所示:

try  {
    FileOutputStream fos   = new FileOutputStream(srcFile);
}catch  (FileNotFoundException e){
    // Error handling code  goes  here
}

如果文件包含數(shù)據(jù),數(shù)據(jù)將被擦除。 為了保留現(xiàn)有數(shù)據(jù)并將新數(shù)據(jù)追加到文件,需要使用FileOutputStream類的另一個構造函數(shù),它接受一個布爾標志,用于將新數(shù)據(jù)附加到文件。
要將數(shù)據(jù)追加到文件,請在第二個參數(shù)中傳遞true,使用以下代碼。

FileOutputStream fos   = new FileOutputStream(destFile, true);

寫入數(shù)據(jù)

FileOutputStream類有一個重載的write()方法將數(shù)據(jù)寫入文件??梢允褂貌煌姹镜姆椒ㄒ淮螌懭胍粋€字節(jié)或多個字節(jié)。

通常,使用FileOutputStream寫入二進制數(shù)據(jù)。要向輸出流中寫入諸如“Hello”的字符串,請將字符串轉換為字節(jié)。
String類有一個getBytes()方法,該方法返回表示字符串的字節(jié)數(shù)組。使用FileOutputStream寫一個字符串如下:

String destFile = "test.txt";
FileOutputStream fos   = new FileOutputStream(destFile, true);
String text = "Hello";
byte[] textBytes = text.getBytes();
fos.write(textBytes);

要插入一個新行,使用line.separator系統(tǒng)變量如下。

String lineSeparator = System.getProperty("line.separator");
fos.write(lineSeparator.getBytes());

需要使用flush()方法刷新輸出流。

fos.flush();

刷新輸出流指示任何寫入的字節(jié)緩沖清出,將數(shù)據(jù)可以寫入目標處。關閉輸出流類似于關閉輸入流。需要使用close()方法關閉輸出流。

// Close  the   output  stream 
fos.close();

close()方法可能拋出一個IOException異常。如果希望自動關閉,請使用try-with-resources創(chuàng)建輸出流。

以下代碼顯示如何將字節(jié)寫入到文件輸出流。

import java.io.File;
import java.io.FileOutputStream;

public class Main {
  public static void main(String[] args) {
    String destFile = "destfile.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  written to F:\website\yiibai\worksp\destfile.txt

F:\website\yiibai\worksp\destfile.txt 文件的內(nèi)容如下:


上一篇:Java Jar API下一篇:Java文件系統(tǒng)