0

我一直在阅读有关 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?
    */
}

也许我做错了所有这些。在此先感谢您对理解的任何帮助。

4

2 回答 2

2

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

如果您想专注于流,请创建一个使用文件系统的应用程序。然后,使用FileOutputStreamFileInputStream了解流 API。

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

于 2012-07-09T16:44:00.857 回答
1

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

如果你想发送像Strings 这样的整个简单对象,你可以使用DataOutputStream/ DataInputStream。(对于字符串,使用UTF方法。)

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

于 2012-07-09T16:50:15.143 回答