BufferedInputStream示例
BufferedOutputStream示例
BufferedReader實例
BufferedWriter示例
ByteArrayInputStream示例
Java ByteArrayOutputStream示例
Java CharArrayReader示例
Java CharArrayWriter示例
Java Console類示例
Java DataInputStream類型
Java DataOutputStream實例
Java Externalizable實例
Java File實例
FileDescriptor示例
Java FileInputStream示例
FileOutputStream示例
Java FilePermission示例
Java FileReader示例
Java FileWriter示例
Java FilterInputStream示例
Java FilterOutputStream示例
Java FilterReader示例
Java FilterWriter示例
Java FileOutputStream
創建輸出流
要寫入文件,需要創建一個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 destFile = "test.txt";
FileOutputStream fos = new FileOutputStream(destFile, true);
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
異常。如果希望自動關閉,請使用try-with-resources
創建輸出流。
以下代碼顯示如何將字節寫入到文件輸出流。
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
文件的內容如下: