日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IO流入门

發布時間:2025/3/20 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IO流入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、I/O的基礎知識

1.流

2.字節流和字符流

(1)字節類流

(2)字符類流

3.預定義流

二、讀取控制臺輸入

1.讀取字符

2.讀取字符串

三、向控制臺寫輸出

1.PrintWriter類

四、讀/寫文件

五、自動關閉流


一、I/O的基礎知識

1.流

Java程序通過流執行I/O,流是一種抽象,要么產生信息,要么使用信息。流通過Java的I/O系統鏈接到物理設備。所有流的行為方式都是相同的,盡管與它們鏈段的物理設備是不同的。因此,可以為任意類型的設備應用相同的I/O流和方法。這意味著可以將許多不同類型的輸入-磁盤文件、鍵盤或網絡socket抽象為輸入流。與之對應,輸出流可以引用控制臺、磁盤文件或網絡連接。

2.字節流和字符流

字節流為處理字節的輸入和輸出提供了方法。

字符流為處理字符的輸入和輸出提供了方法。

在最底層,所有I/O仍然是面向字節的。在某些情況下,字符流比字節流更高效。


(1)字節類流

頂級是兩個抽象類InputSream和OutputStream。

其中最重要的兩個方法是read()和write()

(2)字符類流

頂級是兩個抽象類Reader和Writer。

其中最重要的兩個方法是read()和write()

3.預定義流

System.out引用標準的輸出流,默認情況下是控制臺。

System.in引用標準的輸入流,默認情況下是鍵盤。

System.err引用標準的錯誤流,默認情況下也是控制臺。

System.in是InputStream類型的對象;System.out和System.err是PrintStream類型的對象 ???

二、讀取控制臺輸入

為了獲得與控制臺關聯的基于字符的流,可以在BufferedReader對象中封裝System.in。

BufferedReader(Reader inputReader)

Reader是抽象類,InputStreamReader是它的個具體子類,該類將字節轉換為字符。

InputStreamReader(InputStream inputStream)

1.讀取字符

read();

2.讀取字符串

readLine();

代碼演示:

public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));System.out.println("please input...");//讀取字符/* char ch;do {ch = (char) br.read();System.out.println(ch);} while (ch != 'q');*///讀取字符串String s;do {s = br.readLine();System.out.println(s);} while (!s.equals("end"));} BufferedReader br=new BufferedReader(new InputStreamReader(System.in));System.out.println("please input...(Enter 'end' is to quit");String[] str=new String[100];for(int i=0;i<100;i++){str[i]=br.readLine();if(str[i].equals("end")){break;}}for(int i=0;i<100;i++){if(str[i].equals("end")){break;}System.out.println(str[i]);}}

三、向控制臺寫輸出

1.PrintWriter類

對于實際的程序,使用Java向控制臺輸出的推薦方法是通過PrintWriter流。可以使程序國際化更容易。

構造方法:

PrintWriter(OutputStream ops,boolean flushingOn)

flushingOn控制Java是否在每次調用println()方法時刷新輸出流。True為自動刷新。

printWriter支持print()和println()方法。

public static void main(String[] args) {PrintStream ps=new PrintStream(System.out,true);ps.println("hello");int i=1;ps.println(i);ps.println(true);}

四、讀/寫文件

對于讀/寫文件,兩個最常用的流是FileInputStream和FileOutputStream,這兩個類創建與文件鏈接的字節流。

FileInputStream(String fileName)

當創建輸入流時,如果文件不存在,就會拋出FileNotFoundException異常。對于輸出流,如果不能打開文件或不能創建文件,也會拋出FileNotFoundException異常。

文件使用完之后必須關閉,使用close()方法完成的。

public static void main(String[] args) {FileInputStream fis= null;try {fis = new FileInputStream(new File("F:/黑馬程序員/資源/閱讀記錄.txt"));int len=0;byte[] bys=new byte[1024];while((len=fis.read(bys))!=-1){System.out.println(new String(bys,0,len));}} catch (IOException e) {e.printStackTrace();} finally {try {if(fis!=null) {fis.close();}} catch (IOException e) {e.printStackTrace();}}}

五、自動關閉流

JDK7增加了一個新特性,該特性提供了另外一種管理資源(例如文件流)的方式,這種方式能自動關閉文件。
一般形式為:
? ? ? ? try(resource-specification){
? ? ? ? ? ? //use the resource
? ? ? ? }
resource-specification是用來聲明和初始化資源的文件。該語句包含一個變量聲明,在該聲明中使用將被
管理的對象引用初始化變量。當try代碼塊結束時,自動釋放資源。
只有對于實現了AutoCloseable接口的資源,才能使用帶資源的try語句。java.io包中的所有流都實現了此接口。
注意:
? ? ? ? 1.try語句中聲明的資源被隱式聲明為final;
? ? ? ? 2.如果要在try語句中管理多個資源,在每個資源之間使用分號分割即可。

public static void main(String[] args) {try (FileInputStream fs = new FileInputStream("F:/黑馬程序員/資源/閱讀記錄.txt");FileOutputStream fo = new FileOutputStream("F:/黑馬程序員/資源/閱讀記錄copy版本.txt")) {byte[] bys = new byte[1024];int len = 0;while ((len = fs.read(bys)) != -1) {fo.write(bys, 0, len);}} catch (IOException e) {e.printStackTrace();}}

總結

以上是生活随笔為你收集整理的IO流入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。