使用java的IO读取office2007的文档,然后写入到另一个文件,再打开文件出现错误提示
而同样的代码打开offfice 2003的文件没有任何问题
java代码如下:
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class ReadDoc { public static void main(String[] args) throws Exception { File file = new File("C:\\Users\\Administrator\\Desktop\\功能测试文档.docx"); FileInputStream fis = new FileInputStream(file); File file1 = new File("C:\\Users\\Administrator\\Desktop\\test.docx"); FileOutputStream fos = new FileOutputStream(file1); byte[] bytes = new byte[1024]; while(-1 != fis.read(bytes)) { fos.write(bytes); } fos.close(); fis.close(); System.out.println("over.........."); } }
因为是每次都读取1024个字节,可能最后一次读取的不到1024,但写入1024个字节,导致写入的文件比原始文件大,所以出现上述问题,代码调整如为如下方式,问题解决:
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class ReadDoc { public static void main(String[] args) throws Exception { File file = new File("C:\\Users\\Administrator\\Desktop\\功能测试文档.docx"); FileInputStream fis = new FileInputStream(file); File file1 = new File("C:\\Users\\Administrator\\Desktop\\test.docx"); FileOutputStream fos = new FileOutputStream(file1); int len = 0; while(-1 != (len = fis.read())) { fos.write(len); } fos.close(); fis.close(); System.out.println("over.........."); } }