我一直在阅读Java Tutorials on I/O,试图了解流及其正确用法。假设我有两个已连接的设备,并且两个设备上都有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?
*/
}
也许我做错了。提前感谢您提供理解方面的帮助。
答案 0 :(得分:2)
这取决于设备的连接方式。例如,它们可能通过TCP或共享文件系统连接。
如果要关注流,请创建使用文件系统的应用程序。然后,使用FileOutputStream
和FileInputStream
来了解流API。
如果您的重点是网络,那么您也需要学习networking tutorial。
答案 1 :(得分:1)
如果您只想发送字符,请在写入方使用OutputStreamWriter
并在阅读方使用InputStreamReader
包裹您的信息流。您可以编写整个字符串,然后一次读取一个字符并打印它。如果你需要非常小心,你应该为两者选择一个固定的字符编码。
如果您想发送String
之类的完整简单对象,可以使用DataOutputStream
/ DataInputStream
。 (对于字符串,请使用UTF
方法。)
如果您想要变得更复杂,则需要使用ObjectOutputStream
和ObjectInputStream
对对象进行序列化/反序列化。