请大家帮看看,如何读一个文件,并且备份成两份!
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();
}
}
不知道是不是这个意思