我想使用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 "";
}
只要你的字符串是<65536个字符,可以使用DataOutputStream.writeUtf()和DataInputStream.readUTF()。如果您需要比字符串和原语更复杂的东西,则需要使用ObjectOutputStream
和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()
方法首先获得字符数,然后读取相应数量的字符。只要你只是写/读字符串,流就可以计算出来。
两个想法:
-
使用
DataOutputStream.writeUTF
和DataInputStream.readUTF
-
使用JSON(或XML)等"持有人"格式,并构建一个JSON数组,您"打印",然后在另一端使用任何众多库进行解码(JSON库在json.org是足够的任务)