本章介紹FileInputStream 和 FileOutputStream
目錄
1. FileInputStream 和 FileOutputStream 介紹
2. 示例程序
FileInputStream 是文件輸入流,它繼承於InputStream。
通常,我們使用FileInputStream從某個文件中獲得輸入字節。
FileOutputStream 是文件輸出流,它繼承於OutputStream。
通常,我們使用FileOutputStream 將數據寫入 File 或 FileDescriptor 的輸出流。
關於File的介紹,可以參考文章「java io之 File總結」 。
關於FileDescriptor的介紹,可以參考文章「java io之 FileDescriptor總結」。
FileInputStream 函數接口
FileInputStream(File file) FileInputStream(FileDescriptor fd) FileInputStream(String path)
int available() void close() FileChannel getChannel() final FileDescriptor getFD() int read() int read(byte[] buffer, int byteOffset, int byteCount) long skip(long byteCount)FileOutputStream 函數接口
FileOutputStream(File file) FileOutputStream(File file, boolean append) FileOutputStream(FileDescriptor fd) FileOutputStream(String path) FileOutputStream(String path, boolean append)
void close() FileChannel getChannel() final FileDescriptor getFD() void write(byte[] buffer, int byteOffset, int byteCount) void write(int oneByte) 2. 示例程序關於FileInputStream和FileOutputStream的API用法,參考示例代碼(FileStreamTest.java):
import java.io.File;import java.io.FileDescriptor;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.PrintStream;;import java.io.IOException;
public class FileStreamTest {
private static final String FileName = "file.txt";
public static void main(String[] args) { testWrite(); testRead(); }
private static void testWrite() { try { File file = new File(FileName); FileOutputStream fileOut1 = new FileOutputStream(file); PrintStream out1 = new PrintStream(fileOut1); out1.print("abcdefghijklmnopqrstuvwxyz"); out1.close();
FileOutputStream fileOut2 = new FileOutputStream(file, true); PrintStream out2 = new PrintStream(fileOut2); out2.println("0123456789"); out2.close();
} catch(IOException e) { e.printStackTrace(); } }
private static void testRead() { try { File file = new File(FileName); FileInputStream in1 = new FileInputStream(file);
FileInputStream in2 = new FileInputStream(FileName);
FileDescriptor fdin = in2.getFD(); FileInputStream in3 = new FileInputStream(fdin);
char c1 = (char)in1.read(); System.out.println("c1="+c1);
in1.skip(25);
byte[] buf = new byte[10]; in1.read(buf, 0, buf.length); System.out.println("buf="+(new String(buf)));
BufferedInputStream bufIn = new BufferedInputStream(in3); char c2 = (char)bufIn.read(); System.out.println("c2="+c2);
in1.close(); in2.close(); in3.close(); } catch(IOException e) { e.printStackTrace(); } }}運行結果:
結果說明:
運行程序,會在源碼所在位置新生成一個文件「file.txt」。它的內容是「abcdefghijklmnopqrstuvwxyz0123456789」。