首页 > 学院 > 开发设计 > 正文

简单的I/O流的读取与输入(上)

2019-11-11 05:30:53
字体:
来源:转载
供稿:网友

  I/O流中的字节流的读取与输入

(用于读取写入二进制文件,如图片、声音、影响等类型文件)

1.对于文件的读取,输入流InputStream下的子类FileInputStream有一个read()可以读取数据,read(byte[])这个方法需要传入一个参数这个参数是一个byte型的数组,用于存储读取到的数据2.把byte数组转化为string类型的数据方便使用String str=new String(by)(by是byte型数组的名称)读取完文件后需要关闭输入流,以免占用内存空间3.完整的过程需要用try/catch来包住,以免程序发生错误而终止不了读取文件代码示例:

public Static String getMsg(){	byte msg[]=new byte[100];	String str=null;	try{		InputStream is=new FileInputStream("src/a.txt");		is.read(msg);		str=new String(msg);		is.close();	}catch(FileNotFoundException e){		e.PRintStackTrace();	}catch(IOException e){		e.printStackTrace();	}	return str;}

4.对于文件的写入,OutputStream下的子类FileOutputStream有一个write()方法写入数据到指定文件,write()方法需要传入一个byte[]数组,如果你想传入String类型的数据,String类型数据有可以转化为byte[]的方法写入文件代码示例:

public Static String putMsg(){	String msg=getMsg();	try{		OutputStream os=new FileOutputStream("src/b.txt",true);		os.write(13);		os.wirte(10);		//在windows系统下,换行符用ASCII码表示是13 10,这里是换行的意思		os.write(msg.getBytes());		//把String类型数据转化为byte[]数组		os.flush();		//刷新输出流		os.close();	}catch (FileNotFoundException e) {		e.printStackTrace();	} catch (IOException e) {		e.printStackTrace();	}}5.上面是对于文本类型文件的读取与写入,但是图片、声音、影响文件不会把读取的数据转为String类型数据,而是直接用byte数组来存储数据,然后全写入另一个文件,相当于复制粘贴一个文件,这里需要注意的是读取与写入的文件类型要一致,即文件的后缀名需要一致。代码示例演示复制粘贴并打开声音文件:
public static void get(){	try{		InputStream is=new FileInputStream("E:/音乐/金娜英 - 说出心声.mp3");		OutputStream os=new FileInputStream("E:/Youku Files/mymusic.mp3");		byte music[]=new byte[1024*10];		int len=0;		while((len=is.read(music))!=-1){			os.write(music);		}		is.close();		os.close();	}catch (FileNotFoundException e) {		e.printStackTrace();	} catch (IOException e) {		e.printStackTrace();	}	String cmd="cmd /c/"文件路径.mp3/"";	Runtime run=Runtime.getRuntime();	try{		run.exec(cmd);	}catch (IOException e) {		e.printStackTrace();	}	//打开文件}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表