java - 在java中将File对象写入文件

标签 java file

对于一个类,我必须将任何类型的文件从客户端发送到服务器。我必须单独处理每个数据包并使用 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/

相关文章:

c# - 日志字段应该私有(private)静态的任何原因?

java - 查找给定 N 的所有排列的算法

java - Android AppBar SearchView 占据所有空间,没有后退箭头

java - 从文件读取然后将其放入构造函数的代码将不起作用

linux - 使用定界符在 BASH 中拆分大文件

c - 在 Linux 上用 C 流式传输音频文件

java - 在 android web View 中,html 页面被视为在大屏幕而不是在移动设备中打开

java - 将 Velocity 宏转换为 Java 指令

javascript - 在 React 中将字符串下载为 .txt 文件

Java .jar 不带特定字母(波兰语字母)