IO流 : 做用 :用於設備和設備之間的數據傳輸。
File類的使用 :操做問價的屬性
IO流:用來操做文件的數據。
IO流的分類:
流按照操做數據的類型分爲兩種: 字節流 ,字符流
字節流 : 讀取的是文件的二進制數據,不會對二進制作處理。不會解析成比看得懂的數據。
字符流 :讀取的也是二進制數據,他會將二進制數據轉化爲咱們能過識別的字符(解碼)。 字符流是以字符單位的。
字符流 = 字節流 + 解碼。
流按照流的方向: 輸入流和輸出流。
判斷流是輸出仍是輸入: 以當期的應用程序爲參考 ,觀察數據是流入仍是流出,若是是流入就輸入流 ,若是是流出就是輸出流。
//====================字節流========================
1.字節輸入流:
InputStream :此抽象類是表示字節輸入流的全部類的超類 ,抽象的類
如何判斷一個流值字節輸入流 :
判斷一下他的類名是否以InputStream結尾。
使用 FileInputStream: 是InputStream的子類
FileInputStream使用步驟:
1.找到目標文件
2.創建通道
3.建立一個緩衝區
4.讀取數據
5.關閉資源
public class Demo1 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
// getFile();
// getFile2();
// getFile3();
getFile4();
}
//方式四:經過建立緩衝區和循環的方式來讀取
public static void getFile4() throws IOException{
//1.找目標文件
File file = new File("D:\\java課件及資料\\第十九次課\\代碼\\Day19\\src\\com\\beiwo\\homework\\HomeWork.java");
//2.創建通道
FileInputStream fileInputStream = new FileInputStream(file);
//3.建立一個緩衝區
byte[] b = new byte[1024]; // 通常寫1024倍數
//4.讀取數據
int count = 0;
while((count = fileInputStream.read(b))!=-1){
System.out.println(new String(b,0,count));
}
//5.關閉資源
fileInputStream.close();
}
//方式三:建立緩衝區來讀取數據 缺陷不可以讀取一個完整的文件
public static void getFile3() throws IOException{
//1.找目標文件
File file = new File("D:\\a.txt");
//2.創建通道
FileInputStream fileInputStream = new FileInputStream(file);
//3.建立一個緩衝區
byte[] b = new byte[1024];
//4.讀數據
//緩衝區來讀數據 : 數據存在哪裏
//數據是存在緩存區字節數組中的
//返回值就是文件的大小。
int count = fileInputStream.read(b);
System.out.println(count);
//String裏面幫咱們作了解碼功能
System.out.println(new String(b, 0, count));
//5.關閉資源
fileInputStream.close();
}
//方法二:用循環來讀取字節數 缺點讀取的效率不高
public static void getFile2() throws IOException{
//1.找目標文件
File file = new File("D:\\a.txt");
//2.創建通道
FileInputStream fileInputStream = new FileInputStream(file);
//3.讀數據
/*for(int i = 0;i<file.length();i++ ){//有多少個字節就去多少次
char c = (char)fileInputStream.read();
System.out.print(c);
}*/
int c 0;
//經過while循環調用read()的方法 ,若是返回的值以-1表示文件沒有內容了。
while((c fileInputStream.read())!= -1){
System.out.print((char)content);
}
//4.關閉資源
fileInputStream.close();
}
//方法一:每次只讀取一個字節
public static void getFile() throws IOException{
//1.找到目標文件
File file = new File("D:\\a.txt");
//2.創建通道
FileInputStream fileInputStream = new FileInputStream(file);
//3.讀取文件中的數據
//read() 只獲取一個字節
int data = fileInputStream.read(); //a 第一個字節
int data2 = fileInputStream.read();
System.out.println("獲取的數據:"+data2);
//4.關閉資源(釋放資源)
fileInputStream.close();
}
}