java 实现文件复制的两种方式
2014-07-08 21:40
453 查看
1.将源文件中的内容全部读取到内存中,并一次性写入到目标文件
2.不将源文件中的内容全部读取到内存中来,而是采取边读边写的方式
下面就是采用这两种方法对比
Java代码
package zzs.file.demo;
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 FileCopy {
private File inputFile;
private File outputFile;
private InputStream inputStream;
private OutputStream outputStream;
public FileCopy(String inputPath,String outputPath) throws FileNotFoundException{
inputFile=new File(inputPath);
outputFile=new File(outputPath);
inputStream=new FileInputStream(inputFile);
outputStream=new FileOutputStream(outputFile);
}
//一次性把数据全部读取到内存中来,再一次性写入
public void copy1() throws IOException{
byte b[]=new byte[(int)inputFile.length()];
inputStream.read(b); //一次性读入
outputStream.write(b); //一次性写入
// inputStream.close();
// outputStream.close();
}
//边读边写
public void copy2() throws IOException{
int temp=0;
while((temp=inputStream.read())!=-1){
outputStream.write(temp);
}
inputStream.close();
outputStream.close();
}
public File getInputFile() {
return inputFile;
}
public void setInputFile(File inputFile) {
this.inputFile = inputFile;
}
public File getOutputFile() {
return outputFile;
}
public void setOutputFile(File outputFile) {
this.outputFile = outputFile;
}
public static void main(String[] args) throws IOException{
String inputPath="e:"+File.separator+"Xfire.rar";
String outputPath="f:"+File.separator+inputPath.substring(inputPath.indexOf(File.separator));
FileCopy fileCopy=new FileCopy(inputPath, outputPath);
long start1=System.currentTimeMillis();
fileCopy.copy1();
long end1=System.currentTimeMillis();
System.out.println("一次性全部读入内存复制文件大小为"+fileCopy.getInputFile().length()+"位花费时间为:"+(end1-start1)+"ms");
fileCopy.getOutputFile().delete();
long start2=System.currentTimeMillis();
fileCopy.copy2();
long end2=System.currentTimeMillis();
System.out.println("边读边写复制文件大小为"+fileCopy.getInputFile().length()+"位花费时间为:"+(end2-start2)+"ms");
}
}
2.不将源文件中的内容全部读取到内存中来,而是采取边读边写的方式
下面就是采用这两种方法对比
Java代码
package zzs.file.demo;
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 FileCopy {
private File inputFile;
private File outputFile;
private InputStream inputStream;
private OutputStream outputStream;
public FileCopy(String inputPath,String outputPath) throws FileNotFoundException{
inputFile=new File(inputPath);
outputFile=new File(outputPath);
inputStream=new FileInputStream(inputFile);
outputStream=new FileOutputStream(outputFile);
}
//一次性把数据全部读取到内存中来,再一次性写入
public void copy1() throws IOException{
byte b[]=new byte[(int)inputFile.length()];
inputStream.read(b); //一次性读入
outputStream.write(b); //一次性写入
// inputStream.close();
// outputStream.close();
}
//边读边写
public void copy2() throws IOException{
int temp=0;
while((temp=inputStream.read())!=-1){
outputStream.write(temp);
}
inputStream.close();
outputStream.close();
}
public File getInputFile() {
return inputFile;
}
public void setInputFile(File inputFile) {
this.inputFile = inputFile;
}
public File getOutputFile() {
return outputFile;
}
public void setOutputFile(File outputFile) {
this.outputFile = outputFile;
}
public static void main(String[] args) throws IOException{
String inputPath="e:"+File.separator+"Xfire.rar";
String outputPath="f:"+File.separator+inputPath.substring(inputPath.indexOf(File.separator));
FileCopy fileCopy=new FileCopy(inputPath, outputPath);
long start1=System.currentTimeMillis();
fileCopy.copy1();
long end1=System.currentTimeMillis();
System.out.println("一次性全部读入内存复制文件大小为"+fileCopy.getInputFile().length()+"位花费时间为:"+(end1-start1)+"ms");
fileCopy.getOutputFile().delete();
long start2=System.currentTimeMillis();
fileCopy.copy2();
long end2=System.currentTimeMillis();
System.out.println("边读边写复制文件大小为"+fileCopy.getInputFile().length()+"位花费时间为:"+(end2-start2)+"ms");
}
}
相关文章推荐
- Java实现文件复制的两种方式
- java 实现文件复制的两种方式
- java 实现文件复制的两种方式
- java实现文件下载的两种方式
- java实现文件下载的两种方式
- Java_IO_两种文件复制方式
- java中复制文件的两种方式
- java实现简单文件复制(文件上传)以及springMVC中上传文件方式
- java复制单个文件的两种方式
- Java_IO_两种文件复制方式比较
- java实现文件下载的两种方式
- java实现文件下载的两种方式
- Java_IO_两种文件复制方式比较
- Java实现文件复制的四种方式
- java多种方式实现1G文件复制
- java实现文件下载的两种方式
- Java实现文件复制的四种方式
- Java中复制文件的两种方式
- java 读取文件——按照行取出(使用BufferedReader和一次将数据保存到内存两种实现方式)
- java实现文件和文件夹的复制