FileInputStream和FileOutputStream的使用
总结于尚硅谷学习视频
package com.day0315_2;
import org.junit.jupiter.api.Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 测试FileInputStream和FileOutputStream的使用
*
* 结论:
* 1.对于文本文件(.txt,.java,.c,.cpp),使用字符流处理
* 2.对于非文本文件(.jpt,.mp3,.mp4,.avi,.ppt),使用字节流处理
*
*
*/
public class FileInputOutputStreamTest {
//使用字节流处理文本文件是可能出现乱码的
@Test
public void testFileInputStream() {
FileInputStream fis= null;
try {
//1.造文件
File file=new File("hello.txt");
//2.造流
fis = new FileInputStream(file);
//3.读数据
byte[] buffer= new byte[5];
int len;//记录
while((len=fis.read(buffer))!=-1){
String str=new String(buffer,0,len);
System.out.println(str);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if(fis!=null)
//4.关闭资源
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/*
实现对图片的复制
*/
@Test
public void testFileInputOutputStream(){
FileInputStream fis= null;
FileOutputStream fos= null;
try {
//
File strFile = new File("图片.png");
File destFile = new File("图片2.png");
//
fis = new FileInputStream(strFile);
fos = new FileOutputStream(destFile);
//复制的过程
byte[] buffer=new byte[5];
int len;
while((len=fis.read(buffer))!=-1){
fos.write(buffer,0,len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//
if(fos!=null)
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
if(fis!=null)
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//指定路径下的文件的复制
public void copyFile(String srcPath,String destPath){
FileInputStream fis= null;
FileOutputStream fos= null;
try {
//
File strFile = new File(srcPath);
File destFile = new File(destPath);
//
fis = new FileInputStream(strFile);
fos = new FileOutputStream(destFile);
//复制的过程
byte[] buffer=new byte[1024];
int len;
while((len=fis.read(buffer))!=-1){
fos.write(buffer,0,len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//
if(fos!=null)
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
if(fis!=null)
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Test
public void testCopyFile(){
long start =System.currentTimeMillis();
String srcPath="hello.txt";
String destPath="hello3.txt";
copyFile(srcPath,destPath);
long end =System.currentTimeMillis();
System.out.println("复制操作花费时间为:"+(end-start));
}
}