将File对象写入java中的文件

时间:2015-04-18 04:08:15

标签: 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对象转换为适当目录中的文件?

编辑:事实证明,我误解了文件究竟是什么。我没有传输数据,而是路径。如何传输实际文件?

2 个答案:

答案 0 :(得分:2)

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();

答案 1 :(得分:1)

如果我理解您的问题,请使用FileWriter

File result = new File("result.txt");
result.createNewFile();
FileWriter writer = new FileWriter(result); 
writer.write("Hello user3821496\n"); //just an example how you can write a String to it
writer.flush();
writer.close();