Java輸入/輸出流體系詳解
在用java的io流讀寫文件時(shí),總是被它的各種流能得很混亂,有40多個(gè)類,理清啦,過(guò)一段時(shí)間又混亂啦,決定整理一下!以防再忘
Java輸入/輸出流體系
1.字節(jié)流和字符流
字節(jié)流:按字節(jié)讀取。字符流:按字符讀取。
字符流讀取方便,字節(jié)流功能強(qiáng)大,當(dāng)不能用字符流時(shí),可以用字節(jié)流。
字節(jié)流基類:InputStream、OutputStream
InputStream方法:
OutputStream方法:
字符流基類:Reader、Writer
Reader方法:
Writer方法:
2.輸入輸出流體系
3.轉(zhuǎn)換流
InputStreamReader:字節(jié)輸入流->字符輸入流的轉(zhuǎn)換
OutputStreamWriter:字節(jié)輸出流->字符輸出流的轉(zhuǎn)換
例如:字節(jié)輸入流->字符輸入流的轉(zhuǎn)換
字節(jié)流使用不方便,而普通的Reader讀取也不太方便,轉(zhuǎn)換成BufferReader,利用BufferReader的readLine(),一次讀取一行。
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String result = ""; String line = ""; while((line = reader.readLine())!= null){ result = result+ line; } System.out.println(result);
InputStream to String:
private static String changeInputeStream(InputStream inputStream,String encode) { //通常叫做內(nèi)存流,寫在內(nèi)存中的 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); byte[] data = new byte[1024]; int len = 0; String result = ""; if(inputStream != null){ try { while((len = inputStream.read(data))!=-1){ outputStream.write(data, 0, len); } //result是在服務(wù)器端設(shè)置的doPost函數(shù)中的 result = new String(outputStream.toByteArray(),encode); outputStream.flush(); outputStream.close(); inputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return result; }
InputStream->StringBuffer:
StringBuffer buffer = new StringBuffer(); InputStreamReader reader =new InputStreamReader(request.getInputStream(),"utf-8"); char[] requestchar = new char[5]; if(reader != null){ System.out.println("默認(rèn)編碼:"+reader.getEncoding());//默認(rèn)編碼:UTF8 } //buffer reader.readLine() while((temp = reader.read(requestchar))!=-1){ buffer.append(requestchar, 0, temp); System.out.println(buffer.toString()); } String result = buffer.toString();
4.文件讀寫:
class Kaoshi {public static void main(String[] args){ Scanner in=new Scanner(System.in); int score=0; //分?jǐn)?shù); StringBuffer answer=new StringBuffer();//存放用戶答案,動(dòng)態(tài)字符串; String result="ACDD"; //正確答案; try{ FileReader file=new FileReader("Test.txt"); //打開(kāi)文件; BufferedReader intw=new BufferedReader(file); //緩沖流,按行讀; String s=null; while((s=intw.readLine())!=null){ //判斷不為空; if(!s.startsWith("*")){ System.out.println(s); } else{ System.out.println("請(qǐng)輸入正確答案:"); String str=in.next(); char c= str.charAt(0);//收集答案; answer.append(c); } } }catch(IOException e){ e.printStackTrace(); } for(int i=0;i<result.length();i++){ if(result.charAt(i)==answer.charAt(i)|| result.charAt(i)==answer.charAt(i)-32){ score+=25; } } System.out.println(score); } }
總結(jié)
以上就是本文關(guān)于Java輸入/輸出流體系詳解的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:Java基礎(chǔ)強(qiáng)化訓(xùn)練輸入錯(cuò)誤即結(jié)束進(jìn)程、Java控制臺(tái)輸入數(shù)組并逆序輸出的方法實(shí)例、Java輸出鏈表倒數(shù)第k個(gè)節(jié)點(diǎn)等,如有不足之處,歡迎留言指出,期待您的寶貴意見(jiàn)。
- Java IO之字節(jié)輸入輸出流詳解
- 圖文詳解Java中的字節(jié)輸入與輸出流
- Java中的字節(jié),字符輸出流與字節(jié)和字符輸入流的簡(jiǎn)單理解
- JAVA輸出流與輸入流代碼實(shí)例
- Java字節(jié)流 從文件輸入輸出到文件過(guò)程解析
- Java輸入輸出流實(shí)例詳解
- java 對(duì)象輸入輸出流讀寫文件的操作實(shí)例
- Java和C#輸入輸出流的方法(詳解)
- 淺析Java.IO輸入輸出流 過(guò)濾流 buffer流和data流
- Java輸入輸出流復(fù)制文件所用時(shí)間對(duì)比
- Java實(shí)現(xiàn)帶緩沖的輸入輸出流
相關(guān)文章
Springboot?+redis+谷歌開(kāi)源Kaptcha實(shí)現(xiàn)圖片驗(yàn)證碼功能
這篇文章主要介紹了Springboot?+redis+?歌開(kāi)源Kaptcha實(shí)現(xiàn)圖片驗(yàn)證碼功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01Spring工廠方法創(chuàng)建(實(shí)例化)bean實(shí)例代碼
這篇文章主要介紹了Spring工廠方法創(chuàng)建bean實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01Mybatis_plus基礎(chǔ)教程(總結(jié)篇)
這篇文章主要介紹了Mybatis_plus基礎(chǔ)教程(總結(jié)篇),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09form表單回寫技術(shù)java實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)form表單回寫技術(shù)的相關(guān)資料,需要的朋友可以參考下2016-04-04maven tomcat plugin實(shí)現(xiàn)熱部署
這篇文章主要介紹了maven tomcat plugin實(shí)現(xiàn)熱部署,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07Spring中的@EnableScheduling定時(shí)任務(wù)注解
這篇文章主要介紹了Spring中的@EnableScheduling注解,@EnableScheduling是 Spring Framework 提供的一個(gè)注解,用于啟用 Spring 的定時(shí)任務(wù)功能,通過(guò)使用這個(gè)注解,可以在 Spring 應(yīng)用程序中創(chuàng)建定時(shí)任務(wù),需要的朋友可以參考下2024-01-01