package com.wang;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class StreamTest {
public static void main(String[] args) {
byte[] arr=new byte[5];
FileInputStream fis = null;
try {
fis=new FileInputStream("a.txt");
//第一次读取
fis.read(arr);
System.out.println(new String(arr));
System.out.println("---------");
//第二次读取
fis.read(arr);
System.out.println(new String(arr));
System.out.println("---------");
//第三次读取
fis.read(arr);
System.out.println(new String(arr));
System.out.println("---------");
//第四次读取
fis.read(arr);
System.out.println(new String(arr));
System.out.println("---------");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
a.txt文件内容:
hello
world
java
输出结果:
hello
wor
ld
j
ava
j
分析: 在Windows系统下换行的转义字符为\r\n;所以a.txt内容其实为:
hello
\r\n
world
\r\n
java
程序每次读取五个字节所以,
第一次读取:
hello
控制台输出为:hello
第二次读取:
\r\nwor
控制台输出为:
wor
(也就是一个空行和wor)
第三次读取:
ld\r\nj
控制台输出为:
ld
j
第四次读取:
ava\nj
控制台输出为:
ava
j
\nj是因为第三次的arr[3]=\n,arr[4]=j,在第四次输出中没被覆盖,单个\n控制台输出为换行。