JavaIO文件复制

版权声明:转载原创文章请以超链接形式请注明原文章出处,尊重作者,尊重原创!


恰饭广告




前言:IO流主要分为两大类,分别是字节流与字符流

注意:

1、音频文件、图片、视频(范围广),就用字节流

2、只涉及到文本的,就用字符流


使用字节流复制文本内容(其他文件也可以)

代码如下:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class CopyFile {
    public static void main(String[] args) {
        try{
            File inFile=new File("src.txt"); //源文件
            InputStream in=new FileInputStream(inFile); //文件输入流
            
            File outFile=new File("tar.txt"); //目标文件
            OutputStream out=new FileOutputStream(outFile); //文件输出流
            byte[] buff=new byte[1024]; //创建缓冲区,分配1024个字节大小的内存给buff
            int num=0;
            while((num=in.read(buff))!=-1){ //判断每次读取的最大字节数是否为1024
                out.write(buff,0,num);
//                out.write(buff); //这样也可以,不过容易造成文件内容不正确
                out.flush(); //刷新缓冲区
                String s=new String(buff);
                System.out.println("文件内容复制成功");
                System.out.println("文件复制内容为\n"+s);
            }
            in.close(); //关闭输入流
            out.close(); //关闭输出流
//            inFile.delete(); //删除源文件
//            outFile.renameTo(new File("reName.txt")); //输出文件重命名
        }
        catch(FileNotFoundException e){
            e.printStackTrace();  //在命令行打印异常信息在程序中出错的位置及原因
        }
        catch(IOException e){
            e.printStackTrace();
        }
    }
}

使用字符流复制文本内容(仅限文本文件)

代码如下:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyFile{
    public static void main(String[] args) {
        try{
            File inFile=new File("D:/src.txt"); //源文件
            FileReader fileReader=new FileReader(inFile); //读取文件字符流
            BufferedReader bufferedReader=new BufferedReader(fileReader); //把读取到的字符流放入缓存
            
            File outFile=new File("D:/tar.txt"); //目标文件
            FileWriter fileWrite=new FileWriter(outFile); //写入字符流
            BufferedWriter bufferedWriter=new BufferedWriter(fileWrite); //把要输入的字符流放入缓存
            String s="";
            String str = "";
            while((s=bufferedReader.readLine())!=null){ //判断文件字符流是否读取完毕
                bufferedWriter.write(s); //字符流缓存写入文件
                bufferedWriter.newLine(); //按行读取,遇到换行符则换行
                bufferedWriter.flush(); //刷新缓存
                str+=s;
            }
            System.out.println("文件复制内容为\n"+str);
            //关闭输入输出流
            fileReader.close();bufferedReader.close();
            fileWrite.close();bufferedWriter.close();
//            inFile.delete(); //删除源文件
//            outFile.renameTo(new File("reName.txt")); //输出文件重命名
        }
        catch(FileNotFoundException e){
            e.printStackTrace();  //在命令行打印异常信息在程序中出错的位置及原因
        }
        catch(IOException e){
            e.printStackTrace();
        }
    }
}

说明:

如果想以追加文件内容,而不是覆盖的方式来复制文本内容,则修改如下

OutputStream out=new FileOutputStream(outFile,true); //字节流
FileWriter fileWrite=new FileWriter(outFile,true); //字符流

如果要在字符流指定缓存区大小,则修改如下

BufferedWriter bufferedWriter=new BufferedWriter(fileWrite,1024);

原文链接:https://www.idaobin.com/archives/761.html

让我恰个饭吧.ヘ( ̄ω ̄ヘ)

支付宝 ——————- 微信
图片加载中图片加载中



恰饭广告

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

+ 44 = 50