对于一个类,我必须将任何类型的文件从客户端发送到服务器。我必须单独处理每个数据包并使用 UDP。我已成功将文件从客户端传输到服务器,现在我有一个文件对象,但我不知道如何将其保存到用户指定的目录。
f = new File(path + '\\' + filename);//path and filename are user specified.
FileOutputStream foutput = new FileOutputStream(f);
ObjectOutputStream output = new ObjectOutputStream(foutput);
output.writeObject(result);//result is a File
output.flush();
output.close();
每当我运行此代码时,它都会写入一个具有适当名称的新文件,但我正在测试的文本文件最终只包含乱码。有什么方法可以将File对象转换为适当目录中的文件吗?
编辑:事实证明,我误解了文件到底是什么。我没有传输数据,而是传输路径。如何传输实际文件?
最佳答案
ObjectOutputStream 是一个将特定格式的数据输出到文本文件的类。只有 ObjectInputStream 的 readObject() 可以解码该文本文件。 如果您打开文本文件,正如您所见,它只是乱码。
你想要这个:
FileOutputStream fos = new FileOutputStream(path + '\\' + filename);
FileInputStream fis = new FileInputStream(result);
byte[] buf = new byte[1024];
int hasRead = 0;
while((hasRead = fis.read(buf)) > 0){
fos.write(buf, 0, hasRead);
}
fis.close();
fos.close();
关于java - 在java中将File对象写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29712748/