java的io包详解

 

 

 

 

 

 

AA

首先来说一下读的问题。

从文件中读取数据,有两种方法:

一种是使用FileInputStream,一种是使用FileReader。

FileInputStream:将文件以二进制流的形式读入到stream中,这里首先需要注意的是文件不单单指的是文本文件还包括图片,影音等任何在计算机上存储的文件。如果是文本文件,比如该文本的文件编码是UTF-8编码,则读入的流就是文本中所有字符的UTF-8编码的字符,如果是GBK,则读入的文件就是GBK编码的流。

如果想要将文件转化为字符形式,则需要使用InputStreamReader这个类,它是字节和字符之间的桥梁。在InputStreamReader中,可以指定将字节转化为字符的编码形式,比如下面的一条语句。

InputStreamReader  isr = new InputStreamReader(new FileInputStream(“text.txt”),”UTF-8”);就是将读入的字节流以UTF-8的形式转化为字符。

一般我们还会使用BufferReader这个类,这个类有很多实用性很强的函数,它以Reader作为构造函数的参数。

下面来说一下FileReader:

和FileInputStream一样,它也是以string和file来作为自己的参数。不同的是:1,文件格式比较少,只能是文本格式,而不能是图片或者影音等。2.如果FileReader所在的java源代码是UTF-8格式,而读取的文本是GBK编码,则会出现乱码,java源代码和读取的文本文件的编码必须是一样的,不然会出现乱码,如果没有中文字符,则在有的情况下是不出现乱码的。

这里还要说一下java中的编码格式,java涉及到两种编码源文件编码和class编码,操作系统的编码可以不用考虑。

1,使用string.getbytes()得到的是这个string的java源文件的编码,这里做了一个转化,stirng在class中是unicode编码的,先转化为java源文件所对应的编码,然后得到结果。

2.new string(byte[]),默认是按照java源文件的编码来转换。

3.  char(int):

posted @ 2012-11-10 11:50  lxzh504  阅读(5163)  评论(0编辑  收藏  举报