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)); } }