學習筆記:字節流。
字節流抽象基類:
- public abstract class InputStream implements Closeable {}
//OutputStream是所有字節輸入流的超類
- public abstract class OutputStream implements Closeable, Flushable {}
//OutputStream是所有字節輸出流的超類
- FileOutputStream:文件輸出流將數據寫如File,FileOutputStream是OutputStream子類。
public FileOutputStream(String name):創建文件輸出流以指定的名稱寫入文件
- FileInputStream :從文件中獲取輸入字節,FileInputStream是InputStream子類。
public FileInputStream(String name)
目錄:
一、字節流寫數據
1、字節流寫數據的三種方式
2、字節流寫數據如何換行,如何追加寫入
二、字節流讀數據
1、字節輸入流讀數據:一次讀一個字節數據
2、字節輸入流複製文本文件
3、字節數組流讀數據:一次讀一個字節數組數據
4、字節緩衝流
一、字節流寫數據
1、字節流寫數據的三種方式
public class FileOutputStreamDemo {
public static void main(String[] args) throws IOException {
//public FileOutputStream(String name):創建我呢見輸出流以指定的名稱寫入文件
FileOutputStream fos = new FileOutputStream("idea_test\\fos.txt");//idea_test爲當前模塊
//public void write(int b)
fos.write(97);
//public void write(byte b[])
byte[] bys = {97,98,99,100};
fos.write(bys);
byte[] bytes = "abcdefghigk".getBytes();
fos.write(bytes,2,3);//cde
//最後都要釋放資源
//public void close():關閉此文件輸出流並釋放與此流相關聯的任何系統資源
fos.close();
}
}
2、字節流寫數據如何換行,如何追加寫入
二、字節流讀數據
1、字節輸入流讀數據
- public int read()
import java.io.*;
public class FileInputStreamDemo {
public static void main(String[] args) throws IOException {
//1、創建字節輸入流對象
FileInputStream fis = new FileInputStream("idea_test\\fos.txt");
//2、讀數據
/*
//第一次讀取數據
int read = fis.read();
System.out.println(read);
//第二次讀取數據
read = fis.read();
System.out.println(read);
*/
//2、讀數據 優化上面代碼
/*
fis.read()讀數據
by = fis.read():把讀取到的數據賦值給by
by != -1:判斷讀取到的數據是否是-1
*/
int by;
while((by = fis.read()) != -1){
System.out.println((char)by);
}
//3、釋放資源
fis.close();
}
}
2、字節輸入流複製文本文件
public class FileDemo {
public static void main(String[] args) throws IOException {
//1、創建字節輸入流對象
FileInputStream fis = new FileInputStream("F:\\02-silu\\KETTLE_TEST\\java.txt");
//根據目的地創建字節輸出流對象
FileOutputStream fos = new FileOutputStream("idea_test\\java.txt");
//讀寫數據,複製文本文件
int by;
while((by = fis.read()) != -1){
fos.write(by);
}
//釋放資源
fis.close();
fos.close();
}
}
3、字節數組流讀數據:一次讀一個字節數組數據
import java.io.*;
public class InterfaceDemo {
public static void main(String[] args) throws IOException {
//1、創建字節輸入流對象
FileInputStream fis = new FileInputStream("F:\\02-silu\\KETTLE_TEST\\java.txt");
FileInputStream fis1 = new FileInputStream("F:\\02-silu\\KETTLE_TEST\\java.txt");
//讀數據:方法一
byte[] bys = new byte[5];
//第一次讀數據
int read = fis.read(bys);
System.out.println(read);
System.out.println(new String(bys,0,read));
//第二次讀數據
read = fis.read(bys);
System.out.println(read);
System.out.println(new String(bys,0,read));
//第三次讀數據
read = fis.read(bys);
System.out.println(read);
// System.out.println(new String(bys,0,read));
//第四次讀數據
read = fis.read(bys);
System.out.println(read);
System.out.println("------------------");
// //讀數據:方法二。讀數據改進
byte[] b = new byte[1024];//1024及整數倍
int len;
while((len = fis1.read(b)) != -1){
System.out.print(new String(b,0,len));
}
//釋放資源
fis.close();
fis1.close();
}
}
4、字節緩衝流
public class BufferedInputStreamDemo {
public static void main(String[] args) throws IOException {
//1、創建字節緩衝流對象
FileInputStream fis = new FileInputStream("F:\\02-silu\\KETTLE_TEST\\java.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
//創建字節緩衝流對象,方式2
BufferedInputStream bis2 = new BufferedInputStream(new FileInputStream("F:\\02-silu\\KETTLE_TEST\\java.txt"));
fis.close();
bis.close();
}
}