1.每次读取一个字节API--public int read()--每次读取一个字节返回,若字节已经没有可读的返回-1
package io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public class FileInputStreamDemo01 {
public static void main(String[] args) throws IOException {
InputStream is = new FileInputStream("Data01");
int num1 = is.read();
System.out.println((char)num1);
int num2 = is.read();
System.out.println((char)num2);
int num3 = is.read();
System.out.println((char)num3);
int num4 = is.read();
System.out.println((char) num4);
}
}
package io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public class FileInputStreamDemo01 {
public static void main(String[] args) throws IOException {
InputStream is = new FileInputStream("Data01");
int num;
while ((num = is.read()) != -1) {
System.out.print((char)num);
}
}
}
"Date01"内容:ab3爱
结果:在读取‘爱’时出现乱码
每次读取一个字节弊端:
- 性能较慢
- 读入中文字符输出无法避免乱码问题
2.每次读取一个字节数组的API--public int read(byte[] buffer)--每次读取一个字节数组返回,若字节已经没有可读的返回-1
- 读取的性能提升
- 读取中文字符无法避免乱码问题
3.一次读完全部字节
--方法一:自己定义一个字节数组和文件的大小一样,然后使用上面的方法(弊端,文件过大时,极容易出现内存溢出)
--方法二:官方定义了一个API--readAllBytes