java 读取各种类型文件的二进制并且写入到这些类型的文件,内容等等都不变。

养不胖 发布于 2013/07/23 10:59
阅读 2K+
收藏 1
问题:如题!!!!! 

我现在是用java读取了txt、word、execl三种类型的文件。并且得到他们的二进制流(也就是byte数组)。 
我要怎么通过这个byte数组写入到这些类型的文件中(注:内容不变、文件类型不变、总之所有的东西都不变,还是原来一模一样的东西)。 

请问我应该怎么实现呢? 

读取文件代码,并且得到byte[]. 
Java代码   收藏代码
  1. public byte[] readFile(String filename){  
  2. //      System.out.println("read file " + filename);  
  3.         try{          
  4.             if(filename==null || filename.equals(""))  
  5.             {  
  6.                 System.out.println("filename is invalid.filename=" + filename);  
  7.                 return new byte[0];  
  8.             }  
  9.             File file =new File(filename);  
  10.             long len = file.length();  
  11.             byte[] bytes = new byte[(int)len];  
  12.             try{  
  13.                 BufferedInputStream bufferedInputStream=new BufferedInputStream(new FileInputStream(file));  
  14.                 int r = bufferedInputStream.read( bytes );  
  15.                 if (r != len)  
  16.                   throw new IOException("读取文件不正确");  
  17.                 bufferedInputStream.close();  
  18.             }catch(Exception ex){  
  19.                 ex.printStackTrace();  
  20.                 System.out.println("Read file Exception,filename=" + filename+"---"+ex);  
  21.             }         
  22.             return bytes;  
  23.         }catch(Exception ex){  
  24.             System.out.println("Read file Exception,filename=" + filename+"---"+ex);  
  25.         }  
  26.         return new byte[0];  
  27.     }  


得到byte数组后,直接写入到指定类型的文件。 
Java代码   收藏代码
  1. try {  
  2.                         FileOutputStream fos3 = new FileOutputStream("D://tmp/mailTest/outTest.txt");  
  3.                         PrintWriter out3 = new PrintWriter(fos3);  
  4.                         out3.print(new String(bytes));  
  5.                         out3.flush();  
  6.                         out3.close();  
  7.                     } catch (FileNotFoundException e) {  
  8.                         e.printStackTrace();  
  9.                     }  

加载中
返回顶部
顶部