package xinhuiji_day07;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public class TestFileInputStream {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// 1 ,先定义要操作的文件
String str = File.separator; //得到当前系统的盘符
//String path = File.separator+"home"+File.separator+"han"+File.separator+"FileOutPutStream.txt";
String path = str+"home"+str+"han"+str+"FileOutPutStream.txt";
File file = new File(path);
// 2,通过子类实例化父类
InputStream in = null;
in = new FileInputStream(file);
//byte[] bytes = new byte[1024];//直接这样开辟空间的话,我们并不知道file的实际空间是多大,会造成占用大量内存的
//的结果,我们可以通过File类先获得file的大小,再定义数组的大小
byte[] bytes = new byte[(int) file.length()]; // 定义数组用于存储读到的数据
// 3 读数据
//第一种方法
// int len = in.read(bytes);
// System.out.println("向数组中写入的字符长度:"+len);
//第二种方法
for(int i = 0;i<file.length();i++){
bytes[i] = (byte) in.read();
}
//第三种方法
// String info = new String(bytes,0,len);
String info = new String(bytes);
System.out.println(info);
// 4 。关闭输入流
in.close();
}
}
/////////////////////////////////////////////////////////////////////////////
//第三种方法 。前两种方法都是知道file的长度,如果不知到file的长度就应该使用read()方法
byte[] bytes = new byte[1024];
int len = 0;//用于记录读到的字符个数
int temp = 0;//用于记录in.read()的返回值
//read()方法只有在读到文件末尾时返回值为-1
while((temp = in.read()) != -1){
bytes[len] = (byte) temp;
len++;
}