问题
After painstakingly trying to implement TCP file transfer in my conference chat application using raw byte streams, I've decided it's much easier to send files that I want transferred through object streams. The files are sent and stored at their destination (whether that is the central server or the downloading client) as in-memory File objects. However, these files are no use as just File objects - clients should be able to open them. Is there a way in java to save File objects as hard-disk files or to even open them up through Java?
回答1:
What do you mean with "File objects"; do you mean java.io.File?
Class java.io.File is just a representation of a directory name and filename. It is not an object which can hold the contents of a file.
If you have the data in for example a byte array in memory, then yes, you can save that to a file:
byte[] data = ...;
OutputStream out = new FileOutputStream(new File("C:\\someplace\\filename.dat"));
out.write(data);
out.close();
See the Basic I/O Lesson from Oracle's Java Tutorials to learn how to read and write files with a FileInputStream and FileOutputStream.
回答2:
You should look into Data Handlers
You can use them to transfer files as Data Sources but in a "transparent" way to you.
回答3:
I've decided it's much easier to send files that I want transferred through object streams."
It isn't. Bad idea: costs memory and latency (i.e. time and space). Just send and receive the bytes, with stuff in front to tell you the filename and file size.
来源:https://stackoverflow.com/questions/8232902/java-saving-opening-file-objects