国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

處理流

2019-11-06 06:47:24
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

處理流類型

一、緩沖流

?緩沖流要“套接”在相應(yīng)的節(jié)點(diǎn)流之上,對(duì)讀寫的數(shù)據(jù)提供了緩沖的功能,提高了讀寫的效率,同時(shí)增加了一些新的方法。

?J2SDK提供了四種緩沖流,其常見(jiàn)的構(gòu)造方法為:

BufferedReader (Reader in)

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

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 用于寫入一個(gè)行分隔符。

●對(duì)于輸出的緩沖流,寫出的數(shù)據(jù)會(huì)先在內(nèi)存中緩存,使用 flush 方法將會(huì)使內(nèi)存中的數(shù)據(jù)立刻寫出。

例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);//把標(biāo)記放到100,從100開(kāi)始讀			for(int i=0; i<=10 && (c=bis.read())!=-1 ; i++) {				System.out.print((char)c+" ");			}			System.out.println();			bis.reset();//回到標(biāo)記的點(diǎn)			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();			}	}}

 

二、轉(zhuǎn)換流

●InputStreamReader 和 OutputStreamWriter 用于字節(jié)數(shù)據(jù)到字符數(shù)據(jù)之間的轉(zhuǎn)換。

簡(jiǎn)單的說(shuō),就是把InputStream轉(zhuǎn)換成Reader。于是現(xiàn)在可以直接寫入字符,而不是一個(gè)字節(jié)一個(gè)字節(jié)的寫入。

●InputStreamReader 需要和 InputStream “套接”。

●OutputStreamWriter 需要和 OutputStream “套接”。

●轉(zhuǎn)換流在構(gòu)造時(shí)可以指定其編碼集合,例如:

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();		}	}}

三、數(shù)據(jù)流

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

●DataInputStream 和 DataOutputStream 提供了可以存取與機(jī)器無(wú)關(guān)的Java原始類型數(shù)據(jù)(如:int, double等)的方法。

●DataInputStream 和 DataOutputStream 的構(gòu)造方法為:

DataInputStream (InputStream in)

DataOutputStream (OutputStream out)

例3:TestDataStream

import java.io.*;public class TestDataStream {	public static void main(String[] args) {		ByteArrayOutputStream baos = new ByteArrayOutputStream();//第一步在內(nèi)存中分配了一個(gè)字節(jié)數(shù)組,第二步把管道插上去		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();		}	}}

注:隊(duì)列。先進(jìn)先出,先寫的先讀

四、Print 流

●PrintWriter 和 PrintStream 都屬于輸出流,分別針對(duì)字符字節(jié)

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

●Println 方法用于多種數(shù)據(jù)類型的輸出。

●PrintWriter 和 PrintStream 的輸出操作不會(huì)拋出異常,用戶通過(guò)檢測(cè)錯(cuò)誤狀態(tài)獲取錯(cuò)誤信息。

●PrintWriter 和 PrintStream 有自動(dòng) 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("無(wú)法讀取文件");			}		}}

例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 關(guān)鍵字

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

●serializable接口

標(biāo)記性接口。想把某個(gè)對(duì)象序列化,必須實(shí)現(xiàn)這個(gè)接口,打上標(biāo)記。

●externalizable 接口

一個(gè)serializable的子接口,可以控制序列化的過(guò)程。有兩個(gè)方法: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;}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宕昌县| 廉江市| 清镇市| 精河县| 吉木乃县| 云林县| 乃东县| 新巴尔虎左旗| 铜梁县| 曲水县| 禄丰县| 延安市| 那曲县| 福建省| 惠水县| 镇雄县| 福安市| 定日县| 闽清县| 凭祥市| 太湖县| 德格县| 宝山区| 东辽县| 平乐县| 时尚| 济源市| 平南县| 麟游县| 华蓥市| 府谷县| 庆城县| 华池县| 隆昌县| 石门县| 夹江县| 澜沧| 怀化市| 抚宁县| 沁阳市| 常州市|