对于一个类,我必须从我的客户端向服务器发送任何类型的文件。我必须单独处理每个数据包并使用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对象转换为适当目录中的文件?
编辑:事实证明,我误解了文件究竟是什么。我没有传输数据,而是路径。如何传输实际文件?答案 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();