读书人

3种文件复制方法得到3种不同大小的文

发布时间: 2011-12-14 23:20:17 作者: rapoo

3种文件复制方法,得到3种不同大小的文件?怎么回事?请教大侠!!
复制一个war文件, 大小7k.
第一种方法:4K
public void deployLocalWAR(final String absolutepfad,
final String filename) {
try {
DataInputStream is = new DataInputStream(
new BufferedInputStream(
new FileInputStream(new File(absolutepfad))));


DataOutputStream os = new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream(new File(
"c:\\ " + filename))));
final int n = 1024;
byte[] by = new byte[4*n];
int m;
while ((m = is.read(by)) != -1) {
is.read(by);
os.write(by);
os.flush();
}

is.close();
os.close();

} catch (IOException e) {
System.err.println(e.getCause());
}
第二种方法:1K
就是把while循环语句改称:while (is.available()> 0) {
is.read(by);
os.write(by);
os.flush();
}

第三种方法,就是7k了
public void deployLocalWAR(final String absolutepfad,
final String filename) {
try {
File war=new File(absolutepfad);
DataInputStream is=null;
DataOutputStream os=null;
byte[] b;


File f=new File( "c:\\ " + filename);
is=new DataInputStream(new FileInputStream(war));
b=new byte[is.available()];
is.read(b);


os=new DataOutputStream(new FileOutputStream(f));
os.write(b);
is.close();
os.close();

} catch(IOException ex) {

System.err.println( "err: "+ex.toString());
}
}


谢谢大家乐!




[解决办法]
is.read(by);
os.write(by);

这样是不行滴!

要看 is.read(by) 返回的值是多少(这个值就是实际读入的字节数),然后 os.write(by, 0, num) 才行。

读书人网 >J2SE开发

热点推荐