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