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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java - 流

發(fā)布時間:2025/4/16 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java - 流 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?

字節(jié)流

描述

字符流?

描述

輸入流

InputStream

?

Reader

?

FileInputStream

從文件中讀取原始字節(jié)流,如圖像

FileReader

從文件中讀取字符流

??BufferedReader?從字符輸入流中讀取文本,緩沖各個字符,從而實現字符、數組和行的高效讀取

輸出流

OutputStream

?

Writer

?

FileOutputStream

向文件中寫入原始字節(jié)流,如圖像

FileWriter

向文件中寫入字符流

???BufferedWriter?將文本寫入字符輸出流,緩沖各個字符,從而提供單個字符、數組和字符串的高效寫入

?

?

package com.sungoal.webmanagement.log;import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException;/** * @Package com.sungoal.webmanagement.log* @ClassName: Testdecode* @Description: TODO(這里用一句話描述這個類的作用)* @author andy* @date 2013-10-22 下午05:57:02*/ public class Testdecode {static String fileName = "D:\\logs\\log_dir1\\2013102210.txt";/*** * @Title: simpleJudge* @Description: TODO(單一判斷文件是否是uft-8編碼)*/public static void simpleJudge(){File file = new File(fileName);byte[] b = new byte[3];try {InputStream ios = new java.io.FileInputStream(file);ios.read(b);ios.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}if (b[0] == -17 && b[1] == -69 && b[2] == -65)System.out.println(file.getName() + ":編碼為UTF-8");elseSystem.out.println(file.getName() + ":可能是GBK,也可能是其他編碼。");}/*** * @Title: codeString* @Description: TODO(返回文件的編碼)* @param fileName* @return* @throws Exception String*/public static String codeString(String fileName) throws Exception{ BufferedInputStream bin = new BufferedInputStream( new FileInputStream(fileName)); int p = (bin.read() << 8) + bin.read(); String code = null; switch (p) { case 0xefbb: code = "UTF-8"; break; case 0xfffe: code = "Unicode"; break; case 0xfeff: code = "UTF-16BE"; break; default: code = "GBK"; } return code; } /*** @return * @Title: readFile* @Description: TODO(以文件的存儲編碼來讀取文件,防止讀取出來為亂碼)void*/private static void readFile() {//code為上面方法里返回的編碼方式 InputStreamReader inputStreamReader = null;try {FileInputStream fInputStream = new FileInputStream("D:\\logs\\log_dir1\\2013102210.txt"); inputStreamReader = new InputStreamReader(fInputStream, codeString(fileName));} catch (FileNotFoundException e1) {e1.printStackTrace();} catch (UnsupportedEncodingException e1) {e1.printStackTrace();} catch (Exception e1) {e1.printStackTrace();} BufferedReader in = new BufferedReader(inputStreamReader); StringBuffer sBuffer = new StringBuffer();try {String strTmp = in.readLine();//按行讀取 while (strTmp != null) { sBuffer.append(strTmp + "/n"); strTmp = in.readLine();}} catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace();}System.out.println(sBuffer.toString()); }public static void main(String[] args) {readFile(); } } View Code

?

?

?

?

?

任何數據的讀寫都是01010101

java以unicode編碼,一個字符兩個字節(jié)

以stream結尾的都是字節(jié)流

方向不同(單位為8bit)分為: 字節(jié)輸入流(InputStream)和字節(jié)輸出流(OutputStream)

數據單位(單位為16bit)不同:字符輸入流(Reader)和字符輸出流(Writer)

功能不同??? :?? 節(jié)點流(管道直接套接在數據源上)和處理流(套接在其他管道之上的流)

flush先把緩沖區(qū)的數據寫出來,然后close


bufferedreader readline,提高讀取效率
bufferedwriter newline


轉換流 : 字節(jié)流轉換成字符流 如 outputstreamwriter 將輸出的字節(jié)流轉換成輸出的字符流

阻塞

數據流? : datainputstream,bytearrayoutputstream 現在讀寫英文(字節(jié)流)中文(字符流)都沒問題,但是讀寫double,和long等類型的,沒有此類對應的接口,當然你可以通過String.valueOf(參數).getBytes() ,再一個字節(jié)一個字節(jié)的讀寫,
第一麻煩
第二 列舉一個long類型的 23223233232323243432323322,本來long類型在內存中只占8個字節(jié),現在內存中占了幾十個字節(jié)了
所以數據流應運而生了


print流 : 不會拋異常,不用try catch,會自動flush
object流: objectoutputstream
?????????? 實現Serializable接口(標記性接口,空實現),jdk幫你實現對象的實例化
?????????? transient 修飾的成員變量不予考慮,不被序列化
?????????? 序列化把一個object轉換成字節(jié)流直接寫到文件中
?????????? Externalizable(可外部化),自己可以控制如何實現序列化

總結

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

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