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

问题描述

问题:如题!!!!!我现在是用java读取了txt、word、execl三种类型的文件。并且得到他们的二进制流(也就是byte数组)。我要怎么通过这个byte数组写入到这些类型的文件中(注:内容不变、文件类型不变、总之所有的东西都不变,还是原来一模一样的东西)。请问我应该怎么实现呢?读取文件代码,并且得到byte[].public byte[] readFile(String filename){// System.out.println("read file " + filename); try{ if(filename==null || filename.equals("")) { System.out.println("filename is invalid.filename=" + filename); return new byte[0]; } File file =new File(filename); long len = file.length(); byte[] bytes = new byte[(int)len]; try{ BufferedInputStream bufferedInputStream=new BufferedInputStream(new FileInputStream(file)); int r = bufferedInputStream.read( bytes ); if (r != len) throw new IOException("读取文件不正确"); bufferedInputStream.close(); }catch(Exception ex){ ex.printStackTrace(); System.out.println("Read file Exception,filename=" + filename+"---"+ex); } return bytes; }catch(Exception ex){ System.out.println("Read file Exception,filename=" + filename+"---"+ex); } return new byte[0]; }得到byte数组后,直接写入到指定类型的文件。try {FileOutputStream fos3 = new FileOutputStream("D://tmp/mailTest/outTest.txt");PrintWriterout3 = new PrintWriter(fos3);out3.print(new String(bytes));out3.flush();out3.close();} catch (FileNotFoundException e) {e.printStackTrace();}

解决方案

你都得到bytes了,还废那么多事情用writer写干嘛。。。直接写字节就是原文件内容啊

时间: 2024-09-16 00:47:44

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

Java读取本地磁盘与可移动磁盘驱动盘并实现复制文件

1. 区分本地磁盘,可移动磁盘,驱动盘  代码如下 复制代码 package com.lvjava;   import java.io.File;   import javax.swing.filechooser.FileSystemView;   public class FileSystemTest {       private final static String localDiskName = "本地磁盘";     private final static String

dat文件的创建和写入

问题描述 谁能给个dat文件的操作的例子,我想用此文件当数据库使用用来存数据,并且强行打开的时候,数据为乱码请高手指点 解决方案 解决方案二:应该是当作二进制文件来处理吧,我没用过,这个只是思路.解决方案三:dat后缀可以是任意格式的,你可以把文件以二进制形式写入,然后保存为.dat就行了或者自定义一段无用的byte型数据,然后加入你的文件的开头,然后写入文件,读取的时候程序里面把这段删掉解决方案四:怎么样让打开后时乱码呢?哪位仁兄能给段代码参考下解决方案五:没有人会吗?解决方案六:直接把dat

j2me 如何写入res 里面的txt文件里面

问题描述 j2me 如何写入res 里面的txt文件里面 j2me 如何写入res 里面的txt文件里面, 输入流没用过,和javase 不一样

java-C#中将double值变成二进制然后写入文件,Java中载入该文件读取此二进制double值时不正确

问题描述 C#中将double值变成二进制然后写入文件,Java中载入该文件读取此二进制double值时不正确 目前已定位到是因为C#中的byte范围是0到255,而java中byte值为-128到127导致的错误. 尝试过使用C#的sbyte来解决: bw1 = new BinaryWriter(new FileStream("C:UsersDELLDesktopSpatialIndexctest1.bin", FileMode.Create)); bw2 = new BinaryW

[转Java读取文件]各种流

[Java]读取文件方法大全 1.按字节读取文件内容 2.按字符读取文件内容 3.按行读取文件内容  4.随机读取文件内容 public class ReadFromFile {     /**      * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件.      */     public static void readFileByBytes(String fileName) {         File file = new File(fileName);     

java读取文件和写入文件的方式(简单实例)_java

Java代码 public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. */ public static void readFileByBytes(String fileName) { File file = new File(fileName); InputStream in = null; try { System.out.println("以字节为单位读取文件内容,一次读一个字节:"); // 一次读

Java读取、写入文件如何解决乱码问题_java

读取文件流时,经常会遇到乱码的现象,造成乱码的原因当然不可能是一个,这里主要介绍因为文件编码格式而导致的乱码的问题.首先,明确一点,文本文件与二进制文件的概念与差异. 文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码.ANSI编码等等.二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码.) 因此可以看出文本文件基本上是定长编码的(也有非定长的编码如UTF-8).而二进制文件可看成是变长编码的,因为是值编码嘛,多少

java读取文件特定内容

问题描述 LOC+73+AAAA5::6:MELBOURNEMELBOURNEMELBOURNEMELBOURNE+UN'DTM+95:201105030000:203'RFF+BN:MISCMEL35000000000000000000001'RFF+SI:ABC111111111111111111111111135'文件内容如上,比如我想输出第三行第三个元素,我如何设置条件,当程序搜索到第二个元素即BN时,就输出BN的后面一个元素即第三个元素MISCMEL350000000000000000

根据不同的操作系统读取配置文件/java读取属性文件代码

package cn.com.css.common.util; /** * @brief OSEnum.java 操作系统的枚举 * @attention * @author 涂作权 * @date 2014年4月3日 * @note begin modify by null */public enum EOSPlatForm { Any("any"), Linux("Linux"), Mac_OS("Mac OS"), Mac_OS_X(&qu