字节输入流:InputStream
字节输出流:InputStream
输入流:从输入设备中读取数据
输出流:将数据写入到输出设备中
FileInputStream
- 从文件系统中的某个文件中获得输入字节
- 用于读取诸如图像数据之类的原始字节流
字节流的用途:用于读取图像数据等二进制数据
从文档中读取字符串一般用字符流来完成。
下面是几个读数据的方法,如果返回值为-1,则表示已经达到文件末尾!
public int read() //从输入流中读取一个数据字节
public int read(byte[] b) //从输入流中将最多b.length个字节的数据读入一个byte数组中
public int read(byte[] b,int off,int len) //从输入流中将最多len个字节的数据读入byte数组中
public void close() //关闭此文件输入流并释放与此流有关的所有系统资源
在score.txt中写入“Hello, Java!”,使用read()读取score.txt中的内容。
public static void main(String[] args) {
//创建一个FileInputStream对象
try {
FileInputStream fis = new FileInputStream("java_stream\\score.txt");
//方式一
// int n = fis.read();
// while(n != -1){ //当n为-1时,表示已经达到文件末尾
// System.out.print((char)n);
// n = fis.read();
// }
//方式二
int n = 0;
while((n = fis.read()) != -1){
System.out.print((char)n);
}
fis.close(); //操作完成,关闭文件
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
输出:
Hello, Java!
使用read(byte[] b)读取score.txt中的内容:
public static void main(String[] args) {
//创建一个FileInputStream对象
try {
FileInputStream fis = new FileInputStream("java_stream\\score.txt");
//read(byte[] b)方法
byte[] b = new byte[100];
fis.read(b);
System.out.println(new String(b));
fis.close(); //操作完成,关闭文件
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
使用read(byte[] b,int off,int len)读取score.txt中的内容:
try {
FileInputStream fis = new FileInputStream("java_stream\\score.txt");
//read(byte[] b, int off, int len)方法,int off表示从数组中第几位开始存数据,int len表示存几位数据
byte[] b = new byte[100];
fis.read(b, 0, 5);
System.out.println(new String(b));
fis.close(); //操作完成,关闭文件
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
输出:
Hello