Java程序设计项目化教程-8.1.2字节流读写文件_第1页
Java程序设计项目化教程-8.1.2字节流读写文件_第2页
Java程序设计项目化教程-8.1.2字节流读写文件_第3页
Java程序设计项目化教程-8.1.2字节流读写文件_第4页
Java程序设计项目化教程-8.1.2字节流读写文件_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

8.1.2用字节流读写文件

InputStream和OutputStream是用来读写数据的类,由于计算机中的数据基本都保存在硬盘的文件中,因此不可避免地需要操作文件中的数据,最常见的就是从文件中读取数据并将数据写入文件中。8.1.2用字节流读写文件

JDK提供了FileInputStream和FileOutPutStream这两个类用于文件的读写。

它是JDK提供的基本输入流。但是InputStream并不是一个接口,而是一个抽象类,它是所有输入流的父类,而FilelnputStream是InputStream的子类,它是操作文件的字节输入流,专门用于读取文件中的数据。8.1.2用字节流读写文件InputStream的用法例8-1使用FileInputStream实现从文件读取数据。importjava.io.*;publicclassexample8_1{publicstaticvoidmain(String[]args)throwsException{//创建一个文件字节输入流

FileInputStreamin=newFileInputStream("test.txt");

intb=0;//定义一个int类型的变量b,记住每次读取的一个字节

while(true){

b=in.read();//变量b记住读取的一个字节 if(b==-1){//如果读取的字节为-1,跳出while循环 break;

}

System.out.println(b);//否则将b写出

}

in.close();

}}

运行结果可以看出,控制台打印的结果分别为106、120、106、116、120、121。通常情况下读取文件应该输出字符,这里之所以输出数字是因为计算机中的文件都是以字节的形式存在的“test.txt”文件中,字符'j'、'x'、'j’、't’、'x、'y'各占一个字节,因此最终结果显示的就是“test.txt”中的6个字节所对应的十进制数。例8-1在文件读取的过程中可能会发生错误。例如文件不存在、没有读取权限等,这些会导致抛出文件找不到的异常FileNotFoundException。如果不创建文本文件“test.txt”,程序运行后,就会出现如图所示的异常。注意文件不存在时控制台的报错信息会有一个潜在的问题,即如果读取过程中发生了I/O错误,InputStream就无法正常关闭,资源也无法及时释放。对于这种问题,可以使用try...finally来保证无论是否发生I/O错误,InputStream都能够正常关闭。注意8.1.2用字节流读写文件例8-2对例8-1的程序进行修改publicclassexample8_2{

publicstaticvoidmain(String[]args)throwsException{ InputStreaminput=null;

try{//创建一个文件字节输入流 FileInputStreamin=newFileInputStream("test.txt");

intb=0;//定义一个int类型的变量b,记住每次读取的一个字节

while(true){

b=in.read();//变量b记住读取的一个字节

if(b==-1){//如果读取的字节为-1,跳出while循环 break; } System.out.println(b);//否则将b写出

}

}finally{ if(input!=null){ input.close();

}

}

}与FileInputStream对应的是FileOutputStream。FileOutputStream是OutputStream的子类,它是操作文件的字节输出流,专门用于把数据写入文件。8.1.2用字节流读写文件publicclassexample8_3{ publicstaticvoidmain(String[]args)throwsException{

//创建一个文件字节输出流 OutputStreamout=newFileOutputStream("example.txt"); Stringstr="你好"; byte[]b=str.getBytes(); for(inti=0;i<b.length;i++){ out.write(b[i]); }

out.close(); }}使用FileOutputStream将数据写入文件。例8-38.1.2用字节流读写文件程序运行后,会在项目当前目录下生成一个新的文本文件example.txt,打开此文件,会看到上图所示内容。例8-38.1.2用字节流读写文件如果通过FileOutputStream向一个已经存在的文件中写入数据,那么该文件中的数据首先会被清空,然后写入新的数据。若希望在已存在的文件内容之后追加新内容,则可使用FileOutputStream的构造方法FileOutputStream(StringfileName,booleanappend)来创建文件输出流对象,并把append参数的值设置为true。例8-38.1.2用字节流读写文件publicclassexample8_4{ publicstaticvoidmain(String[]args)throwsException{

OutputStreamout=newFileOutputstream("example.txt",true); Stringstr="欢迎你!"; byte[]b=str.getBytes(); for(inti=0;i<b.length;i++){ out.write(b[i]); } out.close(); }}演示如何将数据追加到文件末尾。例8-48.1.2用字节流读写文件程序运行后,查看项目当前目录下的文件“example.txt”从图中可以看出,程序通过字节输出流对象向文件“example.txt”写入“欢迎你!”后,并没有将原有文件中的数据清空,而是将新写入的数据追加到了文件的末尾。例8-48.1.2用字节流读写文件由于I/O流在进行数据读写操作时会出现异常,为了代码简洁,在上面的程序中使用了throws关键字将异常抛出。然而一旦遇到I/O异常,I/O流的close()方法将无法执行,流对象所占用的系统资源将得不到释放,因此,为了保证I/O流的close()方法必须执行,通常将关闭流的操作写在finally代码块中。8.1.2用字节流读写文件finally{

try{

if(in!=null)//如果in不为空,则关闭输入流 in.close();

}catch(Except

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论