实例讲述Java IO文件复制
前言: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);
您可能感兴趣的文章:
- Java文件读写IO/NIO及性能比较详细代码及总结
- java IO流将一个文件拆分为多个子文件代码示例
- JDK1.7 之java.nio.file.Files 读取文件仅需一行代码实现
- Java NIO Path接口和Files类配合操作文件的实例
- Java探索之Thread+IO文件的加密解密代码实例
- Java中IO流文件读取、写入和复制的实例
- JAVA通过HttpURLConnection 上传和下载文件的方法
- Java文件(io)编程之记事本开发详解
- Java文件(io)编程之文件字符流使用方法详解
- Java文件(io)编程_文件字节流的使用方法
- Java文件(io)编程_基于File类的基本用法(必看篇)
- Java IO文件后缀名过滤总结
赞 (0)
