2

我想使用 DataInputStream 将几个字符串从 A 发送到 B。

我知道如何使用.write(),但我不确定分离字符串的最佳方法。事实上 - 经过研究,除非我在字符串中添加一个字符并在 B 处拆分,否则似乎不可能。

DataInputStream将考虑使用的任何替代方案。我打算创建一个Array并将其发送出去,尽管我不知道该怎么做。

到目前为止,我有:

public String getDetails() {       
 System.out.print("Name: ");
 String uiname = scan.next();
 pout.write(uiname);

 System.out.print("Address: ");
 String uiaddress = scan.next();

 pout.write(uiaddress);

 return "";

}

4

2 回答 2

2

只要您的字符串长度小于 65536 个字符,您就可以使用DataOutputStream.writeUtf()DataInputStream.readUTF()。如果您需要比字符串和原语更复杂的东西,则需要使用ObjectOutputStreamand ObjectInputStream

示例(可能包含语法错误):

DataOutputStream out = new DataOutputStream(...);
out.writeUtf("foo");
out.writeUtf("bar");
out.close();

DataInputStream in = new DataInputStream(...);
String s1 = in.readUtf();
String s2 = in.readUtf();
// that's all, folks!

writeUtf()方法在字符串之前加上其字符数。该readUtf()方法首先获取字符数,然后准确读取那么多字符。只要您只是在编写/读取字符串,流就可以弄清楚。

于 2013-03-22T14:40:09.260 回答
1

两个想法:

  • 使用DataOutputStream.writeUTFDataInputStream.readUTF

  • 使用像 JSON(或 XML)这样的“持有人”格式并构建一个您“打印”的 JSON 数组,然后在另一端使用众多库中的任何一个进行解码(json.org上的 JSON 库足以完成该任务)

于 2013-03-22T14:41:41.697 回答