InputStream:字节输入流(抽象类)
FileInputStream:文件字节输入流
public static void main(String[] args) throws IOException {
//1:创建字节输入流
File file = new File("工程天下.txt");
System.out.println(file.length());
FileInputStream fis = new FileInputStream(file);
//FileInputStream fis = new FileInputStream("a.txt");
//2:读数据
//2.1 一次读取一个字节
//通过文件的长度,来确定读取字节的次数
/*for(int i=1;i<=file.length();i++){
System.out.println((char)fis.read());
}
*/
//下一个数据字节;如果已到达文件末尾,则返回 -1。
/*int num = 0;
while((num = fis.read())!=-1){
System.out.println((char)num);
}
*/
//2.2 一次读取一个字节数组
byte[] by = new byte[1024];
int num = 0;
while((num = fis.read(by))!=-1){
//读取文件的实际长度
System.out.print(new String(by,0,num));
}
//3:关闭流
fis.close();
}
需求:将D://工程天下.txt 拷贝到当前项目下 名字为new.txt
* 需求2:将D://美女.jpg 拷贝到当前项目下 名字为美女1.jpg
*
* 步骤
* 1:通过输入流读取D://工程天下.txt 到java程序中
* 2:通过输出流把工程天下.txt写到当前项目的文件中
/**
* 拷贝文件1 一次拷贝一个字节
* @param args
* @throws IOException
*/
public static void copyFile1(FileInputStream fis,FileOutputStream fos) throws IOException{
int num = 0;
//读一个字节
int index = 0;
while((num = fis.read())!=-1){
//写一个字节
index++;
fos.write(num);
}
System.out.println(index);
fis.close();
fos.close();
}
/**
* 拷贝文件2 一次拷贝一个字节数组
* @param args
* @throws IOException
*/
public static void copyFile2(FileInputStream fis,FileOutputStream fos) throws IOException{
int num = 0;
byte[] by = new byte[1024*1024];
int index = 0;
//读一个字节数组
while((num = fis.read(by))!=-1){
//一次写一个字节数组 写入的是文件的实际长度
index++;
fos.write(by, 0, num);
}
System.out.println(index);
fis.close();
fos.close();
}
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("D://eclipse-inst-win64.exe");
FileOutputStream fos = new FileOutputStream("eclipse-inst-win64.exe");
long start = System.currentTimeMillis();
//copyFile1(fis,fos);
copyFile2(fis,fos);
long end = System.currentTimeMillis();
System.out.println(end-start);
}