代码如下:
import java.io.*;
import java.util.*;public class FileCopy
{
public FileCopy(String s,String a)
{
File fs=new File(s);
File fa=new File(a);
/**
读入并拷贝数据
*/
try
{
BufferedInputStream fsIn = new BufferedInputStream(new FileInputStream(fs));
BufferedOutputStream faOut = new BufferedOutputStream(new FileOutputStream(fa));
//以下6行为有问题的代码,我不知道错在哪了?
int i=fsIn.read();
while(i!=-1)
{
faOut.write(i);
i=fsIn.read();
}
fsIn.close();
faOut.close();
}catch(IOException e)
{
System.out.println(e);
}
} public static void main(String[] args)
{
System.out.println("Start copy.....");
long l1=System.currentTimeMillis();
new FileCopy(args[0],args[1]);
long l2=System.currentTimeMillis();
System.out.println("Finished!");
System.out.println("Total Time:"+(l2-l1));
}
}args[0]为欲拷贝的文件,args[1]为拷贝文件。谢谢!
import java.io.*;
import java.util.*;public class FileCopy
{
public FileCopy(String s,String a)
{
File fs=new File(s);
File fa=new File(a);
/**
读入并拷贝数据
*/
try
{
BufferedInputStream fsIn = new BufferedInputStream(new FileInputStream(fs));
BufferedOutputStream faOut = new BufferedOutputStream(new FileOutputStream(fa));
//以下6行为有问题的代码,我不知道错在哪了?
int i=fsIn.read();
while(i!=-1)
{
faOut.write(i);
i=fsIn.read();
}
fsIn.close();
faOut.close();
}catch(IOException e)
{
System.out.println(e);
}
} public static void main(String[] args)
{
System.out.println("Start copy.....");
long l1=System.currentTimeMillis();
new FileCopy(args[0],args[1]);
long l2=System.currentTimeMillis();
System.out.println("Finished!");
System.out.println("Total Time:"+(l2-l1));
}
}args[0]为欲拷贝的文件,args[1]为拷贝文件。谢谢!
改成new FileCopy("c:/a.txt","c:/aaaa.txt");试试.注意分隔符"/"或者"\\"
int totalByte=fsIn.available();
while(totalByte>=1)
{
faOut.write(fsIn.read());
totalByte=fsIn.available();
}
可我不知道之前那么写为啥不对。
一般习惯
while((i=fsIn.read())!=-1){
faOut.write(i);
}
这个用字符流复制文件
import java.io.*;
public class WriteFile{
public static void main(String[] args){
try{
BufferedReader in=new BufferedReader(new FileReader(args[0]));
PrintWriter out=new PrintWriter(args[1]);
String s=in.readLine();
while(s!=null)
{
out.println(s);
s=in.readLine();
}
in.close();
out.close();
}catch(IOException e){
System.out.println(e);
}
}
}
下面用字节流复制文件
import java.io.*;
public class CopyFile{
/*public static void copyFile(DataInputStream in,DataOutputStream out) throws IOException{
try{
while(true)
{
out.writeByte(in.readByte());
}
}catch(EOFException eof){
return;
}
}*/
public static void main(String[] args){
try{
DataInputStream in=new DataInputStream(new BufferedInputStream(new FileInputStream(args[0])));
DataOutputStream out=new DataOutputStream(new BufferedOutputStream(new FileOutputStream(args[1])));
//copyFile(in,out);
while(in.available()!=0)
{
out.writeByte(in.readByte());
}
in.close();
out.close();
}catch(IOException e){
System.out.print(e);
}
}
}
DataInputStream in=new DataInputStream(new BufferedInputStream(new FileInputStream(args[0])));
现在使用in.read()方法,DataInputStream 类和BufferedInputStream类都有read()方法,应该是DataInputStream类的read()方法吧?可是为啥它具备缓冲的能力呢?经测试,BufferedInputStream的read()相比于FileInputStream的read()而言,并没有明显的性能提升。BufferedOutputStream倒是可以极其明显的改善输出性能。