源文件
InputStreamReader reader=new InputStreamReader(new FileInputStream(file),"UTF-8");
//读入缓冲区
char[] buffer = new char[1024];
//读入结果
StringBuffer result = new StringBuffer();
//每次读入缓冲区的长度
int len;
//从读入流中读取文件内容并形成结果
while ((len = reader.read(buffer)) != -1) {
result.append(buffer, 0, len);
}
.read(buffer)的意思就是一次性读取1024个数据,返回值是一个int,就是返回的是读取的指针的下标,当指针为-1时,就代表读取完成。
每次读取时,指针都会往下移1024个数据。
接下来就是拼接字符串,如果你是字节型的数据的话,就调用new String(byte [])这个方法来转化,将字节转化为字符。
这里面还有一个问题就是如果你使用字符读取流读取中文乱码的话,就要使用
InputStreamReader这个类来转换一下编码格式。.read(buffer)就是将文件数据一次性读取1024读取到buffer中,然后继续while循环,直到读到文件末尾。用Stringbuffer在while循环中不断的拼接,最后循环结束在一次性输出去。
不要使用
println,因为这就意味着,每次输出就换行,即使在循环结束后再使用println,它还是会输出完再换一行,如果在while循环里面,就意味着每1024个数据就要换行。
文件里面的格式和java读取到的格式是一样的,所以不要管文件本身的格式。比如说:
asdas
sakdba
asdbsaklfna
a
这些文件里面的换行根本就不需要考虑。
如果是输出流,注意每次都要flush,清空“管道”
如果是缓存流,它循环一次,一次读取一行,并且不带换行的,那种才需要带println的