亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

處理流

2019-11-06 06:47:24
字體:
來源:轉載
供稿:網友

處理流類型

一、緩沖流

?緩沖流要“套接”在相應的節點流之上,對讀寫的數據提供了緩沖的功能,提高了讀寫的效率,同時增加了一些新的方法。

?J2SDK提供了四種緩沖流,其常見的構造方法為:

BufferedReader (Reader in)

BufferedReader (Reader in, int size) //sz為自定義緩存區的大小

BufferedWriter (Writer out)

BufferedWriter (Writer out, int size)

BufferedInputStream (InputStream in)

BufferedInputStream (InputStream in, int size)

BufferedOutputStream (OutputStream out)

BufferedOutputStream (OutputStream out, int size)

●緩沖輸入流支持其父類的mark 和reset 方法。

●BufferedReader 提供了readLine 方法用于讀取一行字符串。(以 /r 或 /n 分隔)

●BufferedWriter 提供了newLine 用于寫入一個行分隔符。

●對于輸出的緩沖流,寫出的數據會先在內存中緩存,使用 flush 方法將會使內存中的數據立刻寫出。

例1:TestBufferStream1.java

import java.io.*;public class TestBufferStream1 {	public static void main(String[] args) {		try{				FileInputStream fis = new FileInputStream("C://Users//Administrator//desktop//HelloWorld.java");			BufferedInputStream bis = new BufferedInputStream(fis);			int c = 0;			System.out.PRintln((char)bis.read());			System.out.println((char)bis.read());			bis.mark(100);//把標記放到100,從100開始讀			for(int i=0; i<=10 && (c=bis.read())!=-1 ; i++) {				System.out.print((char)c+" ");			}			System.out.println();			bis.reset();//回到標記的點			for(int i=0; i<=10 && (c=bis.read()) != -1; i++) {				System.out.print((char)c+" ");			}			bis.close();		}catch(IOException e) {		e.printStackTrace();		}	}}

例2:TestBufferStream2.java

import java.io.*;public class TestBufferStream2 {	public static void main(String[] args) {		try {			BufferedWriter bw = new BufferedWriter(new FileWriter("C://Users//Administrator//desktop//Result1.txt"));			BufferedReader br = new BufferedReader(new FileReader("C://Users//Administrator//desktop//Result1.txt"));			String s = null;			for(int i=1; i<=100; i++) {				s = String.valueOf(Math.random());				bw.write(s);				bw.newLine();			}			bw.flush();			while((s=br.readLine()) != null) {				System.out.println(s);			}			bw.close();			br.close();		}catch(IOException e){			e.printStackTrace();			}	}}

 

二、轉換流

●InputStreamReader 和 OutputStreamWriter 用于字節數據到字符數據之間的轉換。

簡單的說,就是把InputStream轉換成Reader。于是現在可以直接寫入字符,而不是一個字節一個字節的寫入。

●InputStreamReader 需要和 InputStream “套接”。

●OutputStreamWriter 需要和 OutputStream “套接”。

●轉換流在構造時可以指定其編碼集合,例如:

InputStream isr = new InputStreamReader(System.in, "ISO8859_1")

例1:TestTransform.java

import java.io.*;public class TestTransform1 {	public static void main(String[] args) {		try {			OutputStreamWriter osw = new OutputStreamWriter(				new FileOutputStream("C://Users//Administrator//desktop//Result2.txt"));				osw.write("microsoftibmsunapplehp");				System.out.println(osw.getEncoding());				osw.close();				osw = new OutputStreamWriter(					new FileOutputStream("C://Users//Administrator//desktop//Result2.txt",true),					"ISO8859_1");				osw.write("microsoftibmsunapplehp");				System.out.println(osw.getEncoding());				osw.close();		}catch(IOException e) {			e.printStackTrace();		}	}}

例2:TestTransform2.java(阻塞/同步)

import java.io.*;public class TestTransform2 {	public static void main(String[] args) {		InputStreamReader isr = new InputStreamReader(System.in);		BufferedReader br = new BufferedReader(isr);		String s = null;		try {			s = br.readLine();			while(s!=null) {				if(s.equalsIgnoreCase("exit")) {					break;				}				System.out.println(s.toUpperCase());				s = br.readLine();			}			br.close();	}catch(IOException e) {			e.printStackTrace();		}	}}

三、數據流

●DataInputStream 和 DataOutputStream 分別繼承自 InputStream 和 OutputStream ,它屬于處理流,需要分別“套接”在 InputStream 和 OutputStream 類型的節點流上。

●DataInputStream 和 DataOutputStream 提供了可以存取與機器無關的Java原始類型數據(如:int, double等)的方法。

●DataInputStream 和 DataOutputStream 的構造方法為:

DataInputStream (InputStream in)

DataOutputStream (OutputStream out)

例3:TestDataStream

import java.io.*;public class TestDataStream {	public static void main(String[] args) {		ByteArrayOutputStream baos = new ByteArrayOutputStream();//第一步在內存中分配了一個字節數組,第二步把管道插上去		DataOutputStream dos = new DataOutputStream(baos);//		try {			dos.writeDouble(Math.random());			dos.writeBoolean(true);						ByteArrayInputStream bais = 				new ByteArrayInputStream(baos.toByteArray());			System.out.println(bais.available());			DataInputStream dis = new DataInputStream(bais);			System.out.println(dis.readDouble());			System.out.println(dis.readBoolean());			dos.close();			dis.close();		}catch(IOException e) {			e.printStackTrace();		}	}}

注:隊列。先進先出,先寫的先讀

四、Print 流

●PrintWriter 和 PrintStream 都屬于輸出流,分別針對字符字節。

●PrintWriter 和 PrintStream 提供了重載的 Print 方法

●Println 方法用于多種數據類型的輸出。

●PrintWriter 和 PrintStream 的輸出操作不會拋出異常,用戶通過檢測錯誤狀態獲取錯誤信息。

●PrintWriter 和 PrintStream 有自動 flush 功能  

例1:TestPrintStream1.java

import java.io.*;public class TestPrintStream1 {	public static void main(String[] args) {		 PrintStream ps = null;		 try {			 FileOutputStream fos = 					new FileOutputStream("C://Users//Administrator//Desktop//log.dat");			 ps = new PrintStream(fos);		 }catch(IOException e){			 e.printStackTrace();		 }		 if(ps != null) {			 System.setOut(ps);		 }		 int ln = 0;		 for(char c = 0; c <= 60000; c++) {			 System.out.print(c+" ");			 ln++;			 if(ln >=100) {				 System.out.println();				 ln = 0;			 }		 }	}}

例2:TestPrintStream2.java

import java.io.*;public class TestPrintStream2 {	public static void main(String[] args) {		String filename = args[0];		if(filename!=null) {			list(filename,System.out);//System.out是PrintStream類型		}					}		public static void list(String f,PrintStream fs) {			try{				BufferedReader br = new BufferedReader(new FileReader(f));				String s = null;				while((s=br.readLine()) != null) {					fs.println(s);				}				br.close();			}catch(IOException e){				fs.println("無法讀取文件");			}		}}

例3:TestPrintStream3.java

import java.util.*;import java.io.*;public class TestPrintStream3 {	public static void main(String[] args) {		String s = null;		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));		try {			FileWriter fw = new FileWriter("C://Users//Administrator//Desktop//logfile.log",true);			PrintWriter log = new PrintWriter(fw);			while( (s=br.readLine()) != null ) {				if(s.equalsIgnoreCase("exit")) {					break;				}				System.out.println(s.toUpperCase());				log.println("_____");				log.println(s.toUpperCase());				log.flush();			}			log.println("==="+new Date()+"===");			log.flush();			log.close();		}catch(IOException e) {			e.printStackTrace(); 		}	}}

五、Object 流

?直接Object 寫入或讀出

●transient 關鍵字

transient修飾的成員變量在序列化的時候不予考慮

●serializable接口

標記性接口。想把某個對象序列化,必須實現這個接口,打上標記。

●externalizable 接口

一個serializable的子接口,可以控制序列化的過程。有兩個方法:readExternal(ObjectInput in) 和 writeExternal(ObejectOutput out)

例1:TestObjectIO.java

import java.io.*;public class TestObjectIO {	public static void main(String[] args) {		try{			T t = new T();			t.k = 8;			FileOutputStream fos = new FileOutputStream("C://Users//Administrator//Desktop//testobjectio.dat");			ObjectOutputStream oos = new ObjectOutputStream(fos);			oos.writeObject(t);			oos.flush();			oos.close();						FileInputStream fis = new FileInputStream("C://Users//Administrator//Desktop//testobjectio.dat");			ObjectInputStream ois = new ObjectInputStream(fis);			T tReaded = (T)ois.readObject();			System.out.println(tReaded.i + " "+tReaded.j + " "+tReaded.d+" "+tReaded.k);		}catch(IOException e){			e.printStackTrace();		}catch(ClassNotFoundException e1){			e1.printStackTrace();		}	}}class T implements Serializable {	int i = 0;	int j = 9;	double d = 2.3;	int k = 15;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品免费av| 亚洲午夜小视频| 日韩精品在线视频| 琪琪第一精品导航| 国模gogo一区二区大胆私拍| 国产精品美女www| 日韩一二三在线视频播| 日韩欧美精品中文字幕| 亚洲一区二区久久久久久| 亚洲专区国产精品| 国内偷自视频区视频综合| 国自产精品手机在线观看视频| 久久久久北条麻妃免费看| 亚洲欧洲高清在线| 亚洲第一视频在线观看| 国产精品永久免费观看| 欧美国产日韩一区二区三区| 亚洲第一中文字幕在线观看| 欧美午夜精品在线| 久久精品成人动漫| 欧美亚洲一区在线| 一本色道久久88综合亚洲精品ⅰ| 国产高清视频一区三区| 欧美激情精品久久久久久黑人| 亚洲第一免费播放区| 中文字幕亚洲无线码在线一区| 色婷婷av一区二区三区久久| 国产一区二区黑人欧美xxxx| 97久久超碰福利国产精品…| 欧美疯狂性受xxxxx另类| 国产精品白嫩美女在线观看| 国产精品高清网站| 久久精品电影网站| 91亚洲午夜在线| 亚洲欧美激情精品一区二区| 国产精品久久久久久av福利软件| 日韩亚洲欧美中文在线| 国内精品400部情侣激情| 久久久国产91| 亚洲第一国产精品| 伊人久久久久久久久久久| 国产日本欧美一区二区三区在线| 国产一区二区激情| 欧美日韩亚洲激情| 奇门遁甲1982国语版免费观看高清| 欧美巨大黑人极品精男| 九九久久久久久久久激情| 欧美资源在线观看| 亚洲午夜未满十八勿入免费观看全集| 奇米4444一区二区三区| 国产成人拍精品视频午夜网站| 亚洲最新av在线| 亚洲国产另类 国产精品国产免费| 国产不卡av在线免费观看| 日韩电影中文字幕一区| 国产欧美一区二区| 国产精品视频99| 国产成人啪精品视频免费网| 国产精品国内视频| 在线成人一区二区| 91香蕉国产在线观看| 久久福利视频导航| 国产一区二区三区在线观看视频| 国产精品久久久久久久久粉嫩av| 91高清免费在线观看| 亚洲精品一区二区网址| 亚洲综合日韩中文字幕v在线| 成人97在线观看视频| 亚洲欧美日韩高清| 亚洲已满18点击进入在线看片| 国产欧美欧洲在线观看| 亚洲视频在线观看| 中文字幕视频在线免费欧美日韩综合在线看| 538国产精品一区二区在线| 成人精品在线视频| 啪一啪鲁一鲁2019在线视频| 久久亚洲影音av资源网| 亚洲国产精品yw在线观看| 97色在线观看| 91社影院在线观看| 亚洲精品成人av| 欧美日韩国产综合视频在线观看中文| 日韩性生活视频| 国自在线精品视频| 在线视频欧美日韩| 欧美一级成年大片在线观看| 亚洲图片在线综合| 日韩69视频在线观看| 久久久久久九九九| 国产精品高清在线| 亚洲人在线观看| 色噜噜狠狠色综合网图区| 久久免费高清视频| 欧美在线视频导航| 国产精品国产自产拍高清av水多| 亚洲新声在线观看| 亚洲自拍在线观看| 亚洲韩国青草视频| 欧美性xxxx极品高清hd直播| 国产精品一区二区电影| 国产伦精品免费视频| 中文在线资源观看视频网站免费不卡| 午夜精品在线观看| 国产精品久久久久久久7电影| 国产精品免费一区二区三区都可以| 最近的2019中文字幕免费一页| 欧美性猛交xxxx久久久| 91精品国产自产在线| 亚洲深夜福利网站| 国产成人免费av| 亚洲91精品在线观看| 国产精品久久久久久久久影视| 国产一区二区三区欧美| 国产精品视频网址| 欧美午夜视频一区二区| 亚洲无限乱码一二三四麻| 午夜精品视频在线| 欧美激情乱人伦| 中文字幕亚洲无线码在线一区| 欧美在线视频网站| 不卡伊人av在线播放| 色偷偷9999www| 亚洲欧美日韩另类| 亚洲日本aⅴ片在线观看香蕉| 国产成人拍精品视频午夜网站| 国产成人精品免费久久久久| 欧美大片免费看| 欧美日韩一区二区三区在线免费观看| 久久露脸国产精品| 欧美电影免费观看| 亚洲va久久久噜噜噜久久天堂| 久久亚洲欧美日韩精品专区| 国产成人激情小视频| 伦伦影院午夜日韩欧美限制| 91精品国产乱码久久久久久久久| 日韩美女激情视频| 日韩在线观看成人| 久久91亚洲人成电影网站| 日韩美女主播视频| 欧美电影免费观看高清完整| 亚洲日本中文字幕| 色哟哟入口国产精品| 欧洲美女免费图片一区| 国产成人鲁鲁免费视频a| 国内免费久久久久久久久久久| 成人激情在线观看| 有码中文亚洲精品| 97香蕉久久夜色精品国产| 亚洲色图美腿丝袜| 国产一区二区三区中文| 亚洲国产精久久久久久| 日韩免费高清在线观看| 亚洲人成网站777色婷婷| 国产成人极品视频| 国语对白做受69| 亚洲精品自产拍| 亚洲精品视频网上网址在线观看| 欧美性极品xxxx做受| 欧美精品一区二区三区国产精品| 国产精品一区二区av影院萌芽| 久久6精品影院| 一区二区在线免费视频| 国产欧美精品一区二区三区-老狼| 亚洲精品综合久久中文字幕|