首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

3种文件复制方法,得到3种不同大小的文件?如何回事?请教大侠!

2011-12-14 
3种文件复制方法,得到3种不同大小的文件?怎么回事?请教大侠!!复制一个war文件,大小7k.第一种方法:4Kpublic

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) 才行。

热点排行