Java中如何处理其他文件类型的读写功能

Java中如何处理其他文件类型的读写功能,java,Java,我正在做一个程序,它将从我的远程服务器接收任何文件,这些文件可以是.doc、.pdf和其他一些文件类型。我将读取这些文件中的内容,并将其写入另一个具有相同文件扩展名的新文件中。但是,当我从远程服务器收到一个.doc文件,并尝试读取该文件并写入另一个文件时,它会在我的test.doc中显示类似这样的内容。我不知道这个问题,我尝试了PrintStream、BufferedWriter或PrintWriter,但不幸的是,它没有任何帮助这是我读/写文件的源代码 try

我正在做一个程序,它将从我的远程服务器接收任何文件,这些文件可以是.doc、.pdf和其他一些文件类型。我将读取这些文件中的内容,并将其写入另一个具有相同文件扩展名的新文件中。但是,当我从远程服务器收到一个.doc文件,并尝试读取该文件并写入另一个文件时,它会在我的test.doc中显示类似这样的内容。我不知道这个问题,我尝试了
PrintStream、BufferedWriter
PrintWriter
,但不幸的是,它没有任何帮助

这是我读/写文件的源代码

         try
           {
             InputStream is1 = con1.getInputStream();
             BufferedReader read1 = new BufferedReader (new InputStreamReader(is1));
             String data1 = "" ; 
             while ((data1 = read1.readLine()) != null)
             {
              PrintWriter pw = new PrintWriter("test.doc","UTF-8");
               pw.write(data1);
               pw.close();

              }
          System.out.println("done");
           }
          catch(IOException e)
          {
              e.printStackTrace();
          }



如果我们有不同的文件类型,我可以知道读/写的最佳方法是什么吗?

这些文件类型有二进制数据,不应作为字符读取。(另外,请注意,每次通过
while
循环创建一个新的
PrintWriter
。这永远不会起作用。)直接处理二进制数据即可。类似这样的(未经测试)可能会起作用:

InputStream is1 = con1.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is1);
byte[] buffer = new byte[2048]; // or whatever size you want
int n;
OutputStream os = new FileOutputStream("test.doc");
while ((n = bis.read(buffer)) >= 0) {
    os.write(buffer, 0, n);
}
os.close();
bis.close();

此外,您应该使用语句。

这些文件类型具有二进制数据,不应作为字符读取。(另外,请注意,每次通过
while
循环创建一个新的
PrintWriter
。这永远不会起作用。)直接处理二进制数据即可。类似这样的(未经测试)可能会起作用:

InputStream is1 = con1.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is1);
byte[] buffer = new byte[2048]; // or whatever size you want
int n;
OutputStream os = new FileOutputStream("test.doc");
while ((n = bis.read(buffer)) >= 0) {
    os.write(buffer, 0, n);
}
os.close();
bis.close();
此外,您应该使用语句。

其他方法(更简洁、更具表达力):

其他方法(更简洁、更具表现力):


.doc
文件不能这样读取。你需要一个第三方库,比如poi.pdf文件怎么样?你把文件写成“UTF-8”-我怀疑它不是文本库-试试二进制
.doc
文件不能像那样读取。你需要一个第三方库,比如poi.pdf文件怎么样?你把文件写成“UTF-8”-我怀疑它不是文本库-试试二进制!