package com.atguigu.java;
import org.junit.Test;
import java.io.*;
/**
* 测试FileInputStream和FileOutputStream的使用
*
* 结论:
* 1.对于文本文件(.txt/.java/.c/.cpp),使用字符流处理
* 2.对于非文本文件(.jpg/.mp3/.mp4/.avi/.doc/.ppt ...),使用字节流处理
*
* 补充:对于文本文件也可以使用字节流进行复制操作,但如果想在内存层面展示的话必须要用字符流
* @author
* @create 2022-04-30-15:03
*/
public class FileInputOutPutStreamTest {
//使用字节流FileInputStream处理文本文件可能出现乱码
@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.print(str);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
//4.关闭资源
if (fis!=null)
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/*
实现对图片的复制操作
*/
@Test
public void testFileInputOutputStream() {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
File srcFile = new File("CSDN封面图.jpg");
File destFile = new File("CSDN封面图1.jpg");
fis = new FileInputStream(srcFile);
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 {
try {
if (fos!=null){
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fis!=null){
fis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//指定路径下文件的复制操作
public void copyFile(String srcPath,String destPath){
FileInputStream fis = null;
FileOutputStream fos = null;
try {
File srcFile = new File(srcPath);
File destFile = new File(destPath);
fis = new FileInputStream(srcFile);
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 {
try {
if (fos!=null){
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fis!=null){
fis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@Test
public void testCopyFile(){
long start = System.currentTimeMillis();
String srcPath="C:\\Users\\sdwan\\Desktop\\01.mp4";
String destPath="C:\\Users\\sdwan\\Desktop\\01-1.mp4";
copyFile(srcPath,destPath);
long end = System.currentTimeMillis();
System.out.println("复制操作花费的时间为"+(end-start)+"ms");
}
}
Java学习(尚硅谷)IO流学习之测试FileInputStream和FileOutputStream的使用
最新推荐文章于 2022-07-23 14:18:48 发布