Reputation: 3552
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?
Upvotes: 8
Views: 27707
Reputation: 310980
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.
Upvotes: 0
Reputation: 54084
You should look into Data Handlers
You can use them to transfer files as Data Sources
but in a "transparent" way to you.
Upvotes: 1
Reputation: 206896
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
.
Upvotes: 11