我一直在阅读关于I/O的Java教程,试图了解流及其正确用法。假设我有两个连接的设备,并且两个设备上都有一个InputStream
和OutputStream
。如何在两者之间传输数据?
例如,如果我想让一台设备向另一台设备发送一堆单词,然后另一台将它们打印到屏幕上。这是怎么回事?
public class Device1 {
// assuming connectedDevice is something
String[] words = new String()[]{"foo", "bar", "baz"};
OutputStream os = connectedDevice.getOutputStream();
InputStream is = connectedDevice.getInputStream();
/*
How to write to output stream?
*/
}
public class Device2 {
// assuming connectedDevice is something
ArrayList<String> words = new ArrayList<String>();
OutputStream os = connectedDevice.getOutputStream();
InputStream is = connectedDevice.getInputStream();
/*
How can I somehow get the words using `read()` and `put()`
them into the ArrayList for use?
*/
}
也许我做错了。提前感谢您对理解的帮助。
这取决于设备的连接方式。例如,它们可能通过TCP或共享文件系统进行连接。
如果您想专注于流,请创建一个使用文件系统的应用程序。然后,使用FileOutputStream
和FileInputStream
来理解流API。
如果你的重点是网络,你也会想学习网络教程。
如果您只想发送字符,请在写入端使用OutputStreamWriter
,在读取端使用InputStreamReader
包装流。你可以写整个字符串,然后一次读取一个字符并打印出来。如果你需要非常小心,你应该为两者选择一个固定的字符编码。
如果您想发送像String
s这样的整个简单对象,可以使用DataOutputStream
/DataInputStream
。(对于字符串,请使用UTF
方法。)
如果您想变得更复杂,您需要使用ObjectOutputStream
和ObjectInputStream
对对象进行序列化/反序列化。