Java的5個非常重要的輸入輸出類:InputStream、OutputStream、Reader、Writer、File
一、輸入輸出類庫
流
流,計算機的輸入、輸出操作中流動的數據序列。
Java中的流,位流(字節流)和字符流。
位流:InputStream、OutputStream
字符流:Reader、Writer
輸入輸出流類
1、InputStream
(1)、read()方法
public int read()
public int read(byte b[])
(2)、定位指針的方法
public long skin(long n)
public void mark()
public void reset()
(3)、close()方法
public void close()
InputStream類中部分常用子類的繼承關係
InputStream
FileInputStream
FilterInputstream
DataInputStream
BufferedInputStream
2、OutputStream
(1)、write()方法
public void write(int b)
public void write(byte b[])
(2)、flush()方法
public void flush()
(3)、close()方法
public void close()
OutputStream類的部分常用子類的繼承關係
OutputStream
FileOutputStream
FilterOutputStream
PrintStream
DataOutputStream
BufferedOutputStream
3、Reader
(1)、read()方法
public int read()
public int read(char array[])
(2)、定位指針的方法
public long skin(long n)
public void mark()
public void reset()
(3)、close()方法
public void close()
Reader類中部分常用子類的繼承關係
Reader
BufferedReader
InputStreamReader
FileReader
4、Writer
(1)、write()方法
public void write(int c)
public void write(char array[])
(2)、flush()方法
public void flush()
(3)、close()方法
public void close()
Writer類的部分常用子類的繼承關係
Writer
PrintWriter
BufferedWriter
OutputStreamWriter
FileWriter
二、標準輸入輸出
System.out屬於PrintStream類對象
System.in屬於InputStream類對象
System.err屬於PrintStream類對象
標準輸入
System.in.read()
new BufferedReader(new InputStreamReader(System.in)).readLine()
標準輸出
System.out.print()
System.out.println()
標準錯誤
System.err
三、文件操作
建立File對象
1、File(String path)
2、File(String path, String name)
3、File(File dir, String name)
File對象的屬性和操作
1、獲得文件或目錄名稱與路徑
public String getNmae()
public String getPath()
2、判斷文件或目錄是否存在
public boolean exists()
3、獲取文件長度
public long length()
4、獲取文件讀取屬性
public boolean canRead()
public boolean canWrite()
5、比較文件或目錄
public boolean equals(File file)
6、判斷是文件還是目錄
public boolean isFile()
public boolean isDirectiry()
7、重命名文件
public boolean renameTo(File file)
8、刪除文件
public boolean renameTo(File file)
實例
1、以字節流方式讀/寫文件
(1)、以字節流方式寫入文件
File file = new File(“C:\\txt.txt”);
FileOutputStream fout = new FileOutputStream(file);
char ch = (char)System.in.read();
fout.write(ch);
fout.close();
(2)、以字節流方式讀磁盤文件
File file = new File(“C:\\txt.txt”);
FileInputStream fin = new FileInputStream(file);
int ch = fin.read();
System.out.print((char)ch);
fin.close();
2、磁盤文件讀寫各類數據
(1)、向磁盤文件寫入各類數據
InputStreamReader iin = new InputStreamReader(System.in);
BufferedReader bin = new Buffered(iin);
int I = Integer.parseInt(bin.readLine());
float f = Float.parseFloat(bin.readLine());
boolean b = new Boolean(bin.readLine()).booleanValue();
File file1 = new File(“C:\\txt1.txt”);
FileOutputStream fout = new FileOutputStream(file1);
DataOutputStream dout = new DataOutputStream(fout);
dout.writeInt(i);
dout.writeFloat(f);
dout.writeBoolean(b);
dout..close();
(2)、從磁盤文件讀取各類數據
File file1 = new File(“C:\\txt1.txt”);
FileInputStream fin = new FileInputStream(file1);
DataInputStream din = new DataInputStream(fin);
int i = din.readInt();
float f = din.readFloat();
boolean b = din.readBoolean();
din.close();
File file2 = new File(“C:\\txt2.txt”);
FileOutputStream fout = new FileOutputStream(file2);
DataOutputStream dout = new DataOutputStream(fout);
dout.writeInt(i);
dout.writeFloat(f);
dout.writeBoolean(b);
dout.close();
System.out.println(“整數:”+i);
System.out.println(“浮點數:”+f);
System.out.println(“布爾量:”+b);
3、以字符流方式讀寫文件
(1)、以字符流方式寫入文件
InputStreamReader iin = new InputStreamReader(“System.in);
BufferedReader br = new BufferedReader(iin);
String s = br.readLine();
FileWriter fw1 = new FileWriter(“C:\\txt1.txt”);
BufferedWriter bw = new BufferedWriter(fw1);
bw.write(s);
bw.newLine();
bw.close();
(2)、以字符流方式讀取文件
FileReader fr = new FileReader(“C:\\txt1.txt”);
BufferedReader br = new BufferedReader(fr);
String s = br.readLine();
BufferedWriter bw = new BufferedWriter(
new FileWriter(“C:\\txt2.txt”));
bw.write(s);
bw.newLine();
bw.close();
4、以字符流方式向顯示器輸出
FileReader fr = new FileReader(“C:\\txt.txt”);
BufferedReader br = new BufferedReader(fr);
String s = br.readLine();
BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(System.out));
bw.write(s);
bw.newLine();
bw.close();