实例讲述Java IO文件复制
程序员文章站
2022-06-14 23:32:59
前言:io流主要分为两大类,分别是字节流与字符流
注意:
1、音频文件、图片、视频(范围广),就用字节流
2、只涉及到文本的,就用字符流
使用字节流复制文本内容(其...
前言: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);