ava.io.InputStream & java.io.FileInputStream
Posted 酒徒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ava.io.InputStream & java.io.FileInputStream相关的知识,希望对你有一定的参考价值。
java.io.InputStream & java.io.FileInputStream
java.io.InputStream,这个抽象类是表示字节输入流的超类,这个抽象类的共性的方法有:
方法 | 作用 |
---|---|
int read() | 从输入流中读取数据的下一个字节,并返回,到末尾就返回-1 |
int read(byte[] b) | 从输入流中读取一定数量的字节,并将其存储在缓冲区数组b之中 |
void close() | 关闭输入流,并释放与输入流相关的系统资源 |
java.io.FileInputStream extends InputStream
构造方法
构造方法 | 作用 |
---|---|
FileInputStream(String name) | 创建一个FileInputStream对象,把该对象指向构造方法参数中指定的文件 |
FileInputStream(File file) | 创建一个FileInputStream对象,把该对象指向构造方法参数中指定的文件 |
参数:String name(文件路径)、File file(文件对象)
2、读取文件
java程序 --> JVM --> OS --> OS调用读取数据的方法 --> 读取文件
3、字节输入流读取文件的步骤
- 创建FileInputStream对象,构造方法中指定要读取的文件(路径名或者文件对象)
- 使用FileInputStream对象的方法read,读取文件
- 使用FileInputStream对象的方法close,释放资源
package cn.zhuobo.day14.streamOutput;
import java.io.FileInputStream;
import java.io.IOException;
public class Demo02FileInputStream {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("/home/zhuobo/Desktop/a.txt");
/*int i = fis.read();
System.out.println(i);// 98
i = fis.read();
System.out.println(i);// 99
i = fis.read();
System.out.println(i);// 104*/
int i = 0;
while ((i = fis.read()) != -1) {
System.out.println(i);
}// 循环读取直到末尾,-1是末尾
}
}
4、字节输入流一次读取一个字节的原理
每次指针向后移动一个单位
5、一次读取多个字节
使用int read(byte[] b)
byte[] bytes = new byte[5];// 每次读取最多5个,但是一般定义长度为1024
int len = fis.read(bytes);// len指的是读取的有效字节个数
String str = new String(bytes);
System.out.println(len);
System.out.println(str);
byte[] bytes = new byte[1024];
int len = 0;
while ((len = fis.read(bytes)) != -1) {
System.out.println((new String(bytes)).trim());
}
6、文件复制练习
原文件-->读出来-->写进去-->目标文件
package cn.zhuobo.day14.streamOutput;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileCopy {
public static void main(String[] args) throws IOException {
File fileDes = new File("/home/zhuobo/Desktop/22.png");
FileOutputStream fos = new FileOutputStream(fileDes);
File fileSource = new File("/home/zhuobo/Desktop/dir/1.png");
FileInputStream fis = new FileInputStream(fileSource);
int len = 0;
byte[] bytes = new byte[1024];
while((len = fis.read(bytes)) != -1) {
fos.write(bytes, 0, len);
}
// 先关闭写的流(output)再关闭读的流(input)
fos.close();
fis.close();
}
以上是关于ava.io.InputStream & java.io.FileInputStream的主要内容,如果未能解决你的问题,请参考以下文章
java读取properties的工具类PropertiesUtil