Stream、IO、文件操作
Stream、IO、文件操作
關于本篇,引用一個群大佬的話:
?
stream是管道,文件是數據載體,IO(InPut(輸入)、OutPut(輸出))是數據的流動的方向
?
1.Stream流
Java流是對于字節和字符來說的,所以是字節流,字符流。
什么是流,大家看一個詞,水流,什么是水流大家都知道,那么換成字節流,字符流不過是同樣的意思罷了。 什么是字節流?單個字節或者字符,而單個字節或者字符很明顯構不成流,得是多個字節或者字符。
那么這么解釋,應該是不會再感覺到困惑啦。
下面看看實操吧。
1.1從鍵盤獲取數據
咦,突然有種莫名的熟悉感。這不是Scanner嗎!
不不不,今天我們講的是另一個:InPutSteamReader
看著好長啊,我們這次先不去管它是什么,我們先看看他能干什么:獲取鍵盤數據
1. 獲取一個字符:
import java.io.*; public class Ex5_9io { public static void main(String[] args) throws IOException{ BufferedReader a = new BufferedReader(new InputStreamReader(System.in)); //獲取單個字符 char c; c = (char) a.read(); //使用c來接收字符 System.out.println(c); //輸出 } }
運行結果:
在這里插入圖片描述
玩點花的:
import java.io.*; public class Ex5_9io { public static void main(String[] args) throws IOException{ BufferedReader a = new BufferedReader(new InputStreamReader(System.in)); //獲取單個字符 ArrayList
?
都是之前學過的東西,如果你看不懂,說明基礎大的不太牢固哦
?
運行結果:
在這里插入圖片描述
嘿嘿
在這里插入圖片描述
可以看到,雖然我們輸入了一句話,但是我們的Java卻一個字符一個字符的存入了集合c中
2.獲取多個字符
也就是獲取字符串
import java.io.*; public class Ex5_9io { public static void main(String[] args) throws IOException { BufferedReader a = new BufferedReader(new InputStreamReader(System.in)); String str; str = a.readLine(); System.out.println(str); } }
運行試試
在這里插入圖片描述
嗯,效果還可以,那就玩點花里胡哨的:
import java.io.*; public class Ex5_9io { public static void main(String[] args) throws IOException { BufferedReader a = new BufferedReader(new InputStreamReader(System.in)); //獲取字符串 ArrayList
我們嘗試輸出一堆字符串并保存在集合中。
運行結果:
1.2輸出數據到控制臺
這還有什么可好說的?
System.out.print(); 不換行輸出
System.out.println(); 換行輸出
System.out.write(); 輸出低八位字節
System.out.printf() 格式化輸出(這個之前好像沒說過)
System.out.println(0); //輸出一個,并換行 System.out.print(1+" "); //輸出一個 后面跟個空格,不換行 System.out.write('a');//輸出一個字符a 不換行 System.out.println(); //加個這個,換行,美觀一點 System.out.printf("這是一個數字 %d 這是一個字符串 %s ",1,"hello"); //格式化輸出
運行結果:
2.文件操作
關于對文件的操作,要說的話,有很多很多,就直接實戰看例子吧
2.1相關包
首先呢,我們先導包
import java.io.*;
可以看到,我們的文件操作的包位于java.io包中。
2.2創建文件,并寫入
寫入文件的相關操作位于io包中的「OutputStream」類中。想對文件進行操作,我們需要先利用OutputStream類的構造方法創建一個文件對象,然后根據文件對象的方法對文件進行操作。
OutputStream fwrite = new FileOutputStream("C:/java/text.txt"); //創建文件對象 for (int i = 0;i<10;i++){ //循環向里面存數據 fwrite.write(i); } fwrite.close(); //關閉文件
2.3讀取文件
讀取文件的相關操作位于io包中的「InputStream」類中,我們若想對文件進行操作,就和寫入文件是一樣的,先創建對象,再使用相關操作方法。
利用InputStream讀取文件:
InputStream fread = new FileInputStream("C:/java/text.txt"); //創建文件對象 byte[] fb = fread.readAllBytes(); //創建數組接收數據 fread.close(); //關閉文件 for (byte b : fb) { //循環讀取 System.out.println(b); }
全部代碼:
import java.io.*; public class Ex5_9io { public static void main(String[] args) throws IOException { OutputStream fwrite = new FileOutputStream("C:/java/text.txt"); for (int i = 0;i<10;i++){ fwrite.write( i); } fwrite.close(); InputStream fread = new FileInputStream("C:/java/text.txt"); byte[] fb = fread.readAllBytes(); fread.close(); for (byte b : fb) { System.out.println(b); } } }
Stream、IO、文件操作
關于本篇,引用一個群大佬的話:
stream是管道,文件是數據載體,IO(InPut(輸入)、OutPut(輸出))是數據的流動的方向
1.Stream流
Java流是對于字節和字符來說的,所以是字節流,字符流。
什么是流,大家看一個詞,水流,什么是水流大家都知道,那么換成字節流,字符流不過是同樣的意思罷了。 什么是字節流?單個字節或者字符,而單個字節或者字符很明顯構不成流,得是多個字節或者字符。
那么這么解釋,應該是不會再感覺到困惑啦。
下面看看實操吧。
1.1從鍵盤獲取數據
咦,突然有種莫名的熟悉感。這不是Scanner嗎!
不不不,今天我們講的是另一個:InPutSteamReader
看著好長啊,我們這次先不去管它是什么,我們先看看他能干什么:獲取鍵盤數據
import java.io.*; public class Ex5_9io { public static void main(String[] args) throws IOException{ BufferedReader a = new BufferedReader(new InputStreamReader(System.in)); //獲取單個字符 char c; c = (char) a.read(); //使用c來接收字符 System.out.println(c); //輸出 } }
運行結果:
玩點花的:
import java.io.*; public class Ex5_9io { public static void main(String[] args) throws IOException{ BufferedReader a = new BufferedReader(new InputStreamReader(System.in)); //獲取單個字符 ArrayList
都是之前學過的東西,如果你看不懂,說明基礎大的不太牢固哦
運行結果:
嘿嘿
可以看到,雖然我們輸入了一句話,但是我們的Java卻一個字符一個字符的存入了集合c中
也就是獲取字符串
import java.io.*; public class Ex5_9io { public static void main(String[] args) throws IOException { BufferedReader a = new BufferedReader(new InputStreamReader(System.in)); String str; str = a.readLine(); System.out.println(str); } }
運行試試
嗯,效果還可以,那就玩點花里胡哨的:
import java.io.*; public class Ex5_9io { public static void main(String[] args) throws IOException { BufferedReader a = new BufferedReader(new InputStreamReader(System.in)); //獲取字符串 ArrayList
我們嘗試輸出一堆字符串并保存在集合中。
運行結果:
1.2輸出數據到控制臺
這還有什么可好說的?
System.out.print(); 不換行輸出
System.out.println(); 換行輸出
System.out.write(); 輸出低八位字節
System.out.printf() 格式化輸出(這個之前好像沒說過)
System.out.println(0); //輸出一個,并換行 System.out.print(1+" "); //輸出一個 后面跟個空格,不換行 System.out.write('a');//輸出一個字符a 不換行 System.out.println(); //加個這個,換行,美觀一點 System.out.printf("這是一個數字 %d 這是一個字符串 %s ",1,"hello"); //格式化輸出
運行結果:
2.文件操作
關于對文件的操作,要說的話,有很多很多,就直接實戰看例子吧
2.1相關包
首先呢,我們先導包
import java.io.*;
可以看到,我們的文件操作的包位于java.io包中。
2.2創建文件,并寫入
寫入文件的相關操作位于io包中的「OutputStream」類中。想對文件進行操作,我們需要先利用OutputStream類的構造方法創建一個文件對象,然后根據文件對象的方法對文件進行操作。
OutputStream fwrite = new FileOutputStream("C:/java/text.txt"); //創建文件對象 for (int i = 0;i<10;i++){ //循環向里面存數據 fwrite.write(i); } fwrite.close(); //關閉文件
2.3讀取文件
讀取文件的相關操作位于io包中的「InputStream」類中,我們若想對文件進行操作,就和寫入文件是一樣的,先創建對象,再使用相關操作方法。
利用InputStream讀取文件:
InputStream fread = new FileInputStream("C:/java/text.txt"); //創建文件對象 byte[] fb = fread.readAllBytes(); //創建數組接收數據 fread.close(); //關閉文件 for (byte b : fb) { //循環讀取 System.out.println(b); }
全部代碼:
import java.io.*; public class Ex5_9io { public static void main(String[] args) throws IOException { OutputStream fwrite = new FileOutputStream("C:/java/text.txt"); for (int i = 0;i<10;i++){ fwrite.write( i); } fwrite.close(); InputStream fread = new FileInputStream("C:/java/text.txt"); byte[] fb = fread.readAllBytes(); fread.close(); for (byte b : fb) { System.out.println(b); } } }
Java
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。