使用流在Java中传输数据

时间:2012-07-09 16:38:49

标签: java io stream

我一直在阅读Java Tutorials on I/O,试图了解流及其正确用法。假设我有两个已连接的设备,并且两个设备上都有InputStreamOutputStream。如何在两者之间传输数据?

例如,如果我想让一台设备向另一台设备发送一堆字,然后将它们打印到屏幕上。这会怎么样?

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?
    */
}

也许我做错了。提前感谢您提供理解方面的帮助。

2 个答案:

答案 0 :(得分:2)

这取决于设备的连接方式。例如,它们可能通过TCP或共享文件系统连接。

如果要关注流,请创建使用文件系统的应用程序。然后,使用FileOutputStreamFileInputStream来了解流API。

如果您的重点是网络,那么您也需要学习networking tutorial

答案 1 :(得分:1)

如果您只想发送字符,请在写入方使用OutputStreamWriter并在阅读方使用InputStreamReader包裹您的信息流。您可以编写整个字符串,然后一次读取一个字符并打印它。如果你需要非常小心,你应该为两者选择一个固定的字符编码。

如果您想发送String之类的完整简单对象,可以使用DataOutputStream / DataInputStream。 (对于字符串,请使用UTF方法。)

如果您想要变得更复杂,则需要使用ObjectOutputStreamObjectInputStream对对象进行序列化/反序列化。