java中字节流示例_第1页
java中字节流示例_第2页
java中字节流示例_第3页
java中字节流示例_第4页
全文预览已结束

下载本文档

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

文档简介

1、OutputStream和 InputStream分别为 java 中 IO 包整个字节输入/输出流的的主类:public abstract classInputStreamextendsObjectimplementsCloseable此抽象类是表示字节输入流的所有类的超类。需要定义InputStream子类的应用程序必须总是提供返回下一个输入字节的方法。public abstract classOutputStreamextendsObjectimplements Closeable ,Flushable此抽象类是表示输出字节流的所有类的超类。输出流接受输出字节并将这些字节发送到某个接收器

2、。需要定义OutputStream子类的应用程序必须始终提供至少一种可写入一个输出字节的方法。由上可见,这两个类均为抽象类,必须利用其子类进行实例化。这里,以操作文件为例,对文件进行字节流的IO,所以只需要使用FileOutputStream和 FileInputStream两个子类即可:public classFileInputStreamextendsInputStreamFileInputStream从文件系统中的某个文件中获得输入字节。哪些文件可用取决于主机环境。FileInputStream用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用FileReader。publi

3、c classFileOutputStreamextendsOutputStream文件输出流是用于将数据写入File或FileDescriptor的输出流。文件是否可用或能否可以被创建取决于基础平台。特别是某些平台一次只允许一个FileOutputStream(或其他文件写入对象)打开文件进行写入。在这种情况下,如果所涉及的文件已经打开,则此类中的构造方法将失败。FileOutputStream用于写入诸如图像数据之类的原始字节的流。要写入字符流,请考虑使用FileWriter。操作范例:1,观察这两个子类的的构造方法可知,进行实例化是需要先进行文件的读取:javaview plaincop

4、y1.File f =new File(F:+File.separator+temple.txt);然后再进行实例化:javaview plaincopy1.OutputStream out =new FileOutputStream(f);InputStream in =new FileInputStream(f);这里,有一点需要注意的是:两种构造方法的区别:FileOutputStream( Filefile)和FileOutputStream (File file, boolean append)其中,用前者进行文件的字节流写入时,不会自动在文件已有内容上进行增加,也就是覆盖文件上一次

5、的内容,而后者则会在文件已有内容上进行增加,不会覆盖以前的内容,比如文件中原始内容为:Sugite,现在需要写入 good用前者,内容则会变为: good用后者则会变为:Sugitegood。2 ,对文件进行写入时, 常用两个方法为void write (byte b) 和 void write (byte b, intoff, int len)这里以写入 “ Hello Java! ”为例:由于是以字节形式写入,所以需要先将String对象转为byte对象:javaview plaincopy1.String name=Hello Java!; byteb = name.getBytes()

6、;其中, void write (byte b)和void write (byte b, int off, int len)的区别在于:前者是将 b 中所有内容写入文件中, 而后者则将 b 中从 off 位置开始的长度为 len 的字节写入文件中:out.write(b);的结果是: Hello Java!out.write(b,1,8);的结果则是: ello Jav3 ,若要在写入时进行换行,则需要用rn进行此操作比如:javaview plaincopy1.String name=rnHello Java!;这里需要注意的是:rn 将会占用两个字节,也就是用f.length 返回的值将是

7、13!4 ,从文件中读取字节流的时候,需要首先根据文件大小,开辟一个byte对象:javaview plaincopy1.byte b =new byte (int)f.length()5 ,读取的常用方法为:int read (byte b) 和 int read (byte b, int off, int len)这两者的区别与上面所述类似,此处不再赘述。不过值得注意的是,这两个方法都是带int型返回值的,返回的是读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回-1 。所以此时如果我们无法获知文件大小,则可以这样进行读取:javaview

8、t =0 ;2.intlen =0;3.while(-1 !=(t=in.read()4.blen+ = (byte )t;5.输出的时候直接:System.out.println(new String(b);就可以了PS:由于 byte 中没有重写 toString()方法,所以无法用b.toString(),只能new String(),否则返回的将是b 的hashcode,而不是 b 的内容。6 ,不要忘记close()不管是 out还是 in ,使用完后必须关闭字节流:javaview plaincopy1.in.close();out.close();综合实例:cppview pla

9、incopy1.import java.io.File ;2.import java.io.InputStream ;3.import java.io.FileInputStream ;4.publicclassInputStreamDemo5.publicstaticvoid main(String args) throws Exception/异常抛出,不处理6./第 1 步、使用 File类找到一个文件7.File f=new File(d:+File.separator +test.txt);/声明 File对象8./第 2 步、通过子类实例化父类对象9.InputStream input = null ;/准备好一个输入的对象10.input =new FileInputStream(f) ;/通过对象多态性, 进行实例化11./第 3 步、进行读操作12.byte b =new byte1024 ;/数组大小由文件决定13.intlen = 0 ;14.inttemp = 0 ;/接收每一个读取进来的数据15.while(temp=input.read()!=-1)16./表示还有内容,

温馨提示

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

评论

0/150

提交评论