读书人

请大家帮看看怎么读一个文件并且备

发布时间: 2012-01-28 22:06:14 作者: rapoo

请大家帮看看,如何读一个文件,并且备份成两份!
c:/a.gif文件,将a.gif备份成u.gif和b.gif(文件必须读一回)
请问能否使用BufferedInputStream来反复读写内存?

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class Test {

public static void main(String[] args) throws IOException {

FileInputStream fis = new FileInputStream( "c:/a.gif ");
BufferedInputStream snap2bis = new BufferedInputStream(fis);
BufferedInputStream snap2bis2 = new BufferedInputStream(fis);

System.out.println(snap2bis.available());
System.out.println(snap2bis.available());

System.out.println(snap2bis.available());
snap2bis.mark(0);

writefile(snap2bis, "c:/u.gif ");
System.out.println(snap2bis.available());
snap2bis.reset();
writefile(snap2bis2, "c:/b.gif ");
System.out.println(snap2bis.available());

snap2bis.close();

}

private static void writefile(BufferedInputStream bis, String filepath)
throws IOException {
OutputStream os = new FileOutputStream(filepath);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = bis.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
}


}


[解决办法]
我试着写了一下
package aaaa;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.File;

public class shiyan {
public static void main(String[] args) {
try{
File wenjian=new File(args[0]);
File shuchu1=new File(args[1]);
File shuchu2=new File(args[2]);

FileInputStream duqu=new FileInputStream(wenjian);
BufferedInputStream duqua=new BufferedInputStream(duqu);

FileOutputStream xieru1=new FileOutputStream(shuchu1);
FileOutputStream xieru2=new FileOutputStream(shuchu2);

BufferedOutputStream xierua1=new BufferedOutputStream(xieru1);
BufferedOutputStream xierua2=new BufferedOutputStream(xieru2);

byte[] zijie=new byte[1024];

while(duqua.read(zijie)!=-1)
{
xierua1.write(zijie);
xierua2.write(zijie);
}

xierua1.flush();
xierua2.flush();
xierua1.close();
xierua2.close();

duqua.close();
duqu.close();

if (shuchu1.exists() && shuchu1.length()> 0)
System.out.println(args[1]+ "输出成功! ");
else
System.out.println(args[1]+ "输出失败! ");

if (shuchu2.exists() && shuchu2.length()> 0)
System.out.println(args[2]+ "输出成功! ");
else
System.out.println(args[2]+ "输出失败! ");



}catch(IOException a)
{
System.out.println( "异常! ");
}
}
}
不知道是不是这个意思
[解决办法]
import java.io.*;

public class CopyFiles {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException
{
// TODO Auto-generated method stub
File f1=new File( "e:\\a.gif ");
File f2=new File( "e:\\b.gif ");
File f3=new File( "e:\\c.gif ");
FileInputStream fis=new FileInputStream(f1);
BufferedInputStream bis=new BufferedInputStream(fis);

FileOutputStream fos2=new FileOutputStream(f2);
BufferedOutputStream bos2=new BufferedOutputStream(fos2);

FileOutputStream fos3=new FileOutputStream(f3);
BufferedOutputStream bos3=new BufferedOutputStream(fos3);
byte[] b1=new byte[100];
int read=0;
while((read=bis.read(b1))!=-1)
{
bos2.write(b1,0,read);
bos3.write(b1,0,read);
}

bis.close();
bos2.close();
bos3.close();
}

}

不知道是不是这个意思

读书人网 >J2SE开发

热点推荐