java种复制文件的N种方法
2017-07-02 11:19
337 查看
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import javax.sql.rowset.CachedRowSet; /* * IO流分类: * 流向分类 * 输入流 读取数据 FileReader Reader * 输出流 写出数据 FileWriter Writer * * * 数据类型分类 * 字节流 * 字节输入流 读取数据 InputStream * 字节输出流 写出数据 OutputStream * 字符流 * 字符输入流 读取数据 Reader * 字符输出流 写出数据 Writer */ public class Work05 { // 通过字符流复制一个文本文件 public static void main(String[] args) throws IOException { // 源目录 File src = new File("6.jpg"); //目标目录 File dest = new File("bb.txt"); //copy01(src, dest); //copy02(src, dest); // copy03(src, dest); // copy04(src, dest); // copy05(src, dest); copy06(src, dest); } // 第7种: 字节流的复制方法和字符流的复制方法相同(不做统一演示) @SuppressWarnings("resource") private static void copy06(File src, File dest) throws IOException { //创建字节输入流 FileInputStream in = new FileInputStream(src); //创建字节输出流 FileOutputStream out= new FileOutputStream(dest); int len; //定义byte数组 byte[] by=new byte[024]; while((len=in.read(by))!=-1){ out.write(by, 0, len); out.flush(); } in.close(); out.close(); } //第五种:创建FileReader对象通过字符 复制一个文本文件(一次读一个数组) @SuppressWarnings("resource") private static void copy05(File src, File dest) throws IOException { //创建输入流对象 FileReader fr = new FileReader(src); //创建输出流对象 FileWriter fw = new FileWriter(dest); //读写数据 int len; char[] ch=new char[1024]; while((len=fr.read(ch))!=-1) { fw.write(ch); fw.flush(); } //释放资源 fw.close(); fr.close(); } //第四种:创建FileReader对象通过字符 复制一个文本文件(一次读一字符) @SuppressWarnings("resource") private static void copy04(File src, File dest) throws IOException { //创建输入流对象 FileReader fr = new FileReader(src); //创建输出流对象 FileWriter fw = new FileWriter(dest); //读写数据 int ch; while((ch=fr.read())!=-1) { fw.write(ch); } //释放资源 fw.close(); fr.close(); } //第三种:通过字符 缓冲流 复制一个文本文件(一次读一字符) private static void copy03(File src, File dest) throws IOException { // 创建读取缓冲区 BufferedReader br = new BufferedReader( new FileReader(src)); // 创建写入缓冲区 BufferedWriter bw = new BufferedWriter(new FileWriter(dest)); //定义一个int类型的变量,存储获取到数组的长度 int len ; //调用read 一次读取一个数组, while((len=br.read())!=-1){ /* * void write(int c) 写入单个字符。 * write吧接受到的int数强转为char类型 * write方法的源码 * public void write(int c) throws IOException { * synchronized (lock) { if (writeBuffer == null){ writeBuffer = new char[writeBufferSize]; } writeBuffer[0] = (char) c; write(writeBuffer, 0, 1); } } * */ bw.write(len); //刷新 bw.flush(); } //释放资源 bw.close(); br.close(); } //二种:通过字符 缓冲流 复制一个文本文件(一次读一一个数组) private static void copy02(File src, File dest) throws IOException { // 创建读取缓冲区 BufferedReader br = new BufferedReader( new FileReader(src)); // 创建写入缓冲区 BufferedWriter bw = new BufferedWriter(new FileWriter(dest)); //定义一个int类型的变量,存储获取到数组的长度 int len ; //定义一个char数组,用来存储获取到的字符,char数组的长度是1024的倍数 char[] ch=new char[1024]; //调用read 一次读取一个数组, while((len=br.read(ch))!=-1){ //一次读取一个数组 bw.write(ch,0,len); //刷新 bw.flush(); } //释放资源 bw.close(); br.close(); } //一种:通过字符 缓冲流 复制一个文本文件(一次读一行) private static void copy01(File src, File dest) throws IOException { // 创建读取缓冲区 BufferedReader br = new BufferedReader( new FileReader(src)); // 创建写入缓冲区 BufferedWriter bw = new BufferedWriter(new FileWriter(dest)); //定义一个字符串,储存读取到的字符串 String len ; //调用redaline 一次读取一行,存入String类型的len while((len=br.readLine())!=null){ //一次读取一行 bw.write(len); //写一个换行符,这个换行符由系统决定 bw.newLine(); //刷新 bw.flush(); } //释放资源 bw.close(); br.close(); } }复制图片和视频只能用字节流来复制,如果用字符流复制视频或者图片会出现数据丢失!
相关文章推荐
- 将某盘的java文件复制到目标文件的方法。
- java文件复制最快的方法!
- 黑马程序员——java-使用IO流复制文件主要的五种方法
- Java: 复制文件最快方法
- 【Java】利用文件通道的方式改进Java复制单个文件的方法
- java 3中方法复制一个文件
- Java 复制文件的高效方法
- java中复制文件的新方法
- Java 实现文件复制方法
- FileChannel-Java 复制文件的高效方法
- 4 Ways to Copy File in Java -- Java 复制文件的方法
- Java: 复制文件最快方法
- Java: 复制文件最快方法
- Java: 复制文件最快、高效率的方法
- java写的一个用字节流复制文件的方法
- java 本地文件复制的方法
- java复制文件的简单方法
- Java中的4种文件复制方法
- Java IO学习【13】利用字节流复制文件的4种方法详解
- java: 复制文件最快方法