你的程序是返回文件的内容是吗?如果是文本文件,可以用 FileReader 来读取,每次返回的是一个字符,如果您要用 InputStream 来读的话,System.out.print((char)file.read()); 这里就会有问题了。如果遇到的是中午,就可能乱码了。因为中文可能是多个字节组成的
修改一下:
/**
* 读入字节数组
*
* @throws IOException
*/
private static void readFile_2() throws IOException {
FileInputStream fis = new FileInputStream("fos.txt");
byte[] array = new byte[1024];
int len = 0; // 读取的字节长度
while ((len = fis.read(array)) != -1) {
System.out.println(new String(array, 0, len));
}
fis.close();
}
/**
* 一次读一个字节
*
* @throws IOException
*/
private static void readFile_1() throws IOException {
FileInputStream fis = new FileInputStream("fos.txt");
int ch = 0;
while ((ch = fis.read()) != -1) {
System.out.println((char) ch);
}
fis.close();
} |