使用DataInputStream和DataOutputStream

时间:2013-03-22 14:34:12

标签: java arrays datainputstream dataoutputstream

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

我知道如何使用.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 "";

}

2 个答案:

答案 0 :(得分:2)

只要你的字符串是<您有65536个字符,可以使用DataOutputStream.writeUtf()DataInputStream.readUTF()。如果您需要比字符串和基元更复杂的内容,则需要使用ObjectOutputStreamObjectInputStream

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

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()方法首先获取字符数,然后准确读取多个字符。只要您只是编写/读取字符串,流就可以解决它。

答案 1 :(得分:1)

两个想法:

  • 使用DataOutputStream.writeUTFDataInputStream.readUTF

  • 使用像JSON(或XML)这样的“holder”格式,然后构建一个“打印”的JSON数组,然后使用众多的库中的任何一个来解码另一端({{JSON库} { 3}}足以完成任务)