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

首頁 > 開發 > Java > 正文

Java中io流解析及代碼實例

2024-07-13 10:16:02
字體:
來源:轉載
供稿:網友

IO流

Java中IO流分為兩種,字節流和字符流,顧名思義字節流就是按照字節來讀取和寫入的,字符劉是按照字符來存取的;常用的文件讀取用的就是字符流,在網絡通信里面用的就是字節流

下面這張圖是Java中IO流的總體框架:

java,io流實例,io流代碼,io實例

字節流

Java中字節流一般都是以stream結尾的,輸入的字節流叫InputStream,輸出字節流叫OutputStream;InputStream和OutputStream是表示自己輸入/輸出的所有類的超類,是抽象類(abstract)

常用的字節流有:

1.FileInputStream/FileOutputStream2.BufferedInputStream/BufferedOutputStream3.SequenceInputStream(序列流)4.ObjectInputStream/ObjectOutputStream(對象的輸入輸出流)5.PrintStream(打印流)

字符流

Java中輸入字符流是以Reader結尾的,輸出字符流是以Writer結尾的,比如我們常見的FileReader和FileWriter就是個字符流,Reader和Witer是輸入/輸出字符流的超類,也是抽象類

常用的字符流有:

1.FileReader/FileWriter2.BufferedReader/BufferedWriter3.InputStremReader/OutputStreamWriter(轉換流)

轉換流

轉換流就是將字節流轉換為字符流的類,有兩種:

·InputStreamReader·OutputStreamWriter

InputStreamReader是個字符流(Reader),需要包裝一個字節流(InputStream);

OutputStreamWriter是個字符流(Writer),需要包裝一個字節流(OutputStream)

包裝(decorate)

包裝的作用的就是在原始的對象的基礎上增加新的功能,比如BufferedReader包裝一個Reader,實際就是對Reader功能的增強;原始的Reader只能按照一個字符一個字符的讀取,經過包裝之后形成的BufferedReader就具有了新的功能:直接讀取一行(readLine)的功能,直觀上說這就是所謂的Decorate.

在設計模式上這就是典型的裝飾模式,其特點是:

1.裝飾對象和真實對象有相同的接口。這樣客戶端對象就能以和真實對象相同的方式和裝飾對象交互2.裝飾對象可以在轉發這些請求以前或以后增加一些附加功能。這樣就確保了在運行時,不用修改給定對象的結構就可以在外部增加附加的功能

對應到我們上來就是,BufferedReader和Reader都是個Reader,通過包裝之后BufferedReader功能增強,但是依然可以當做Reader來用(OO的父類引用可以指向子類)

例子

字節流的例子

將mp3文件切割成多份數,然后重新組合起來

package cn.xdian.test;import java/87997.html">java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.SequenceInputStream;import java.util.Enumeration;import java.util.Vector;public class Demo2 {	public static void main(String[] args) throws IOException {		cutFile();		//切割MP3文件		mergeFlile();		//合并MP3文件	}	//合并MP3	public static void mergeFlile() throws IOException{		File dir = new File("/home/gavinzhou/music_test");		//找到文件夾下所有的MP3文件		Vector<FileInputStream> vector = new Vector<FileInputStream>();		File[] files = dir.listFiles();		for (File file : files){			if(file.getName().endsWith(".mp3")){				vector.add(new FileInputStream(file));			}		}		//通過Vector獲取迭代器		Enumeration<FileInputStream> e = vector.elements();		//創建序列流		SequenceInputStream inputStream = new SequenceInputStream(e);		//輸出流		FileOutputStream fileOutputStream = new FileOutputStream("/home/gavinzhou/conbine.mp3");		//讀取分割的MP3文件		byte[] buf = new byte[1024];		int length = 0 ;		while((length = inputStream.read(buf))!=-1){			fileOutputStream.write(buf,0,length);		}		//關閉流		fileOutputStream.close();		inputStream.close();	}	//切割MP3	public static void cutFile() throws IOException{		File file = new File("/home/gavinzhou/test.mp3");		File dir = new File("/home/gavinzhou/music_test");		//輸入字節流		FileInputStream fileInputStream = new FileInputStream(file);		//讀取文件		byte[] buf = new byte[1024*1024];		int length = 0;		for (int i = 0 ; (length = fileInputStream.read(buf))!=-1 ; i++){			FileOutputStream fileOutputStream = new FileOutputStream(new File(dir,"part"+i+".mp3"));			fileOutputStream.write(buf,0,length);			fileOutputStream.close();		}		//關閉流		fileInputStream.close();	}}

字符流的例子

拷貝文件A變為文件B

package cn.xidian.test;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class Demo1 {	public static void main(String[] args) throws IOException {		File sourceFile = new File("/home/gavinzhou/a.txt");		File desFile = new File("/home/gavinzhou/b.txt");		//創建輸入流		BufferedReader input = new BufferedReader(new FileReader(sourceFile));		//創建輸出流		BufferedWriter output = new BufferedWriter(new FileWriter(desFile));		//讀取源文件,寫入到新的文件		String line = null;		while((line = input.readLine()) != null){			output.write(line);			output.newLine();		}		//關閉輸入輸出流		input.close();		output.close();	}}

打印流的例子

package cn.xidian.test;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.PrintStream;/*打印流可以打印任意類型的數據,打印數據之前都會先把數據轉換成字符串再進行打印 */class Animal{	String name;	String color;	public Animal(String name,String color){		this.name = name;		this.color = color;	}	@Override	 public String toString() {		return "名字:"+this.name+ " 顏色:"+ this.color;	}}public class Demo6 {	public static void main(String[] args) throws IOException {		/*  File file = new File("/home/gavinzhou/a.txt");  //創建打印流  PrintStream printStream = new PrintStream(file);  //打印任何信息到文件中  printStream.println(97);  printStream.println(3.14);  printStream.println('a');  printStream.println(true);  Animal a = new Animal("老鼠", "黑色");  printStream.println(a);  //更改標準的輸入輸出  System.setOut(printStream); //標準輸出是到屏幕上  System.out.println("test.......");  */		//收集異常的日志信息。		File logFile = new File("/home/gavinzhou/test.log");		PrintStream logPrintStream = new PrintStream( new FileOutputStream(logFile,true) );		try{			int c = 4/0;			//引起異常			System.out.println("c="+c);			int[] arr = null;			System.out.println(arr.length);		}		catch(Exception e){			e.printStackTrace(logPrintStream);			//輸出到文件而不是屏幕上		}	}}

總結

以上就是本文關于Java中io流解析及代碼實例的全部內容,希望對大家有所幫助。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美午夜影院在线视频| 亚洲天堂第一页| 精品国产福利在线| 欧美另类高清videos| 色777狠狠综合秋免鲁丝| 亚洲天堂av在线免费| 亚洲国产精品国自产拍av秋霞| 日韩乱码在线视频| 国产91精品久久久久| 国产亚洲欧洲在线| 成人有码在线视频| 91老司机精品视频| 亚洲欧美日韩国产中文| 岛国av午夜精品| 日韩精品在线免费播放| 久久国产精品久久精品| 国产精品视频中文字幕91| 国产成人精品久久二区二区| 亚洲va码欧洲m码| 欧美三级免费观看| 日本不卡高字幕在线2019| 国模私拍视频一区| 成人激情视频在线播放| 亚洲高清福利视频| 日韩中文第一页| 久久久亚洲精品视频| 国产精品午夜视频| 4p变态网欧美系列| 亚洲国产日韩欧美在线图片| 北条麻妃久久精品| 欧美成人免费va影院高清| 蜜臀久久99精品久久久无需会员| 亚洲最大成人免费视频| 92裸体在线视频网站| 欧美精品在线第一页| 久久精品青青大伊人av| 韩国欧美亚洲国产| 亚洲爱爱爱爱爱| 精品视频在线播放免| 日韩av成人在线观看| 亚洲一区亚洲二区亚洲三区| 日韩在线欧美在线| 欧美成人精品h版在线观看| 国产精品亚发布| 亚洲永久在线观看| 成人免费看黄网站| 亚洲视频axxx| 91亚洲国产成人久久精品网站| 久久精品国产一区二区电影| 成人午夜激情网| 亚洲国产精品va在线观看黑人| 中文字幕在线看视频国产欧美在线看完整| 欧美最猛性xxxxx(亚洲精品)| 欧美大片第1页| 久久免费视频这里只有精品| 久久久久久国产精品美女| 成人福利免费观看| 日韩欧美精品免费在线| 久久久精品久久久| 欧美激情免费看| 国产福利视频一区二区| 45www国产精品网站| 成人午夜一级二级三级| 久久视频在线看| 中国人与牲禽动交精品| 国产在线视频不卡| 久久精品视频中文字幕| 午夜精品久久久久久久白皮肤| 欧亚精品中文字幕| 国产女人18毛片水18精品| 国内免费精品永久在线视频| 亚洲激情视频网| 亚洲一区二区三区sesese| 久久精品成人欧美大片| 亚洲天堂男人天堂| 91精品久久久久久久久久入口| 久久视频在线免费观看| 久久成人免费视频| 欧美日本在线视频中文字字幕| 国产日韩精品在线| 国内精久久久久久久久久人| 国产做受69高潮| 亚洲网站视频福利| 国内精品模特av私拍在线观看| 国产精品 欧美在线| 欧美高清第一页| 久久国产精品久久久久| 亚洲欧美一区二区三区久久| 国产国语videosex另类| 久99久在线视频| 成人午夜在线影院| 色偷偷av一区二区三区乱| 国产女精品视频网站免费| 亚洲毛片在线观看.| 亚洲性线免费观看视频成熟| 91亚洲永久免费精品| 国产亚洲福利一区| 国产精品老女人视频| 欧美日韩一区二区在线播放| 久久国产精品偷| 最近日韩中文字幕中文| 国产精品久久综合av爱欲tv| 日韩一区av在线| 国产丝袜高跟一区| 久久精品国产久精国产思思| 亚洲午夜精品久久久久久久久久久久| 欧美成人激情视频| 欧美老少配视频| 亚洲电影中文字幕| 欧美日本高清视频| 色伦专区97中文字幕| 国产精品96久久久久久| 成人高清视频观看www| 日韩高清免费在线| 国产精品久久久久久久av大片| 亚洲精选中文字幕| 精品无码久久久久久国产| 最新国产精品亚洲| 亚洲精品国精品久久99热一| 日韩电影在线观看中文字幕| 久久中文字幕视频| 国色天香2019中文字幕在线观看| 亚洲精品久久久久久下一站| 综合国产在线视频| 欧美亚洲午夜视频在线观看| 欧美最猛性xxxxx免费| 日韩欧美aⅴ综合网站发布| 欧美精品久久久久久久久| 91美女片黄在线观| 国产精品96久久久久久又黄又硬| 色午夜这里只有精品| 日韩女优在线播放| 欧美日韩成人在线播放| 一本一本久久a久久精品牛牛影视| 国产成人一区二区| 97超级碰碰碰| 国产婷婷色综合av蜜臀av| 国产不卡精品视男人的天堂| 亚洲大尺度美女在线| 日韩av网址在线观看| 欧美激情亚洲综合一区| 亚洲国产精品推荐| 亚洲天堂男人天堂女人天堂| 欧美一区二区三区免费视| 欧美老女人性生活| 欧美xxxx综合视频| 91国内揄拍国内精品对白| 色综合久久精品亚洲国产| 国产欧美欧洲在线观看| 国产精品久久久久影院日本| 精品亚洲永久免费精品| 欧美国产日本高清在线| 亚洲天堂免费视频| 久久综合网hezyo| 国产做受高潮69| 国产成人福利视频| 精品久久在线播放| 78m国产成人精品视频| 热久久这里只有| 97精品视频在线观看| 亚洲成色777777在线观看影院| 亚洲乱码一区二区| 精品日韩美女的视频高清| 国产精品影片在线观看|