Tag: dataoutputstream

使用DataOutputStream编写大字符串

我一直在做一些套接字编程来通过线路传输信息。 我遇到了DataOutputStream.writeUTF()的问题。 它似乎允许高达64k的字符串,但我有一些情况,我可以跑过这个。 是否有任何好的替代方案支持更大的字符串或我需要自己滚动?

用于反转字节顺序/更改字节顺序的命令行

我在一些脚本中乱砍,试图解析由Javas DataOutputStream#writeLong(…)编写的一些数据。 由于java似乎总是写大端,我在将字节输入od遇到问题。 这是因为od总是假设endianess与你当前所在的arch的endianess相匹配,而且我在一个小端机器上。 我正在寻找一个简单的单行程来反转字节顺序。 假设你知道文件的最后8个字节是由前面提到的writeLong(…)方法写的长的。 我目前打印这篇文章的最佳尝试是 tail -c 8 file | tac | od -t d8 ,但是tac似乎只对文本起作用(足够公平)。 我发现了一些对dd conv=swab引用,但这只是成对交换字节,并且不能反转这8个字节。 有谁知道这个好的单行程?

无法读取使用DataOutputStream发送的号码

这是我的客户端代码 Random rand = new Random(); int n = rand.nextInt(50) + 1; DataInputStream dis = new DataInputStream(_socket.getInputStream()); DataOutputStream dos = new DataOutputStream(_socket.getOutputStream()); dos.writeInt(n); 这是服务器代码 try { DataInputStream dis = new DataInputStream(socket.getInputStream()); BufferedReader input = new BufferedReader(new InputStreamReader(dis)); int fromClient = input.read(); System.out.println(fromClient); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } 但是我不会从inClient中找到任何东西,即使我像这样按钮 […]

将unicode写入rtf文件

我正在尝试用不同语言将字符串写入rtf文件。 我尝试了一些不同的东西。 我在这里使用日语作为例子,但我尝试过的其他语言也是如此。 public void writeToFile(){ String strJapanese = “日本語”; DataOutputStream outStream; File file = new File(“C:\\file.rtf”); try{ outStream = new DataOutputStream(new FileOutputStream(file)); outStream.writeBytes(strJapanese); outStream.close(); }catch (Exception e){ System.out.println(e.toString()); } } 我也尝试过: byte[] b = strJapanese.getBytes(“UTF-8”); String output = new String(b); 或者更具体: byte[] b = strJapanese.getBytes(“Shift-JIS”); String output = new String(b); 输出流还具有writeUTF方法: outStream.writeUTF(strJapanese); 您可以使用write方法直接在输出流中使用byte []。 […]

无法写入超出特定大小的DataOutputStream – OutOfMemoryError

我有以下代码生成OutOfMemoryexception: byte[] buf = new byte[10240]; int len = 0; DataOutputStream dataOS = new DataOutputStream(conn.getOutputStream()); while ((len = _inputStream.read(buf)) > 0) { System.out.println(“len : ” + len); System.out.println(“Going to write buf into dataOS : ” + buf.length); dataOS.write(buf, 0, len); System.out.println(“dataOS.size() : ” + dataOS.size()); } _inputStream.close(); 以下是调试输出的最后几行: len : 10240 Going to write buf […]

如何同时使用ByteArrayOutputStream和DataOutputStream(Java)

我在这里遇到了很多问题,我认为这是因为我不太了解如何使用Java提供的API。 我需要将一个int和一个byte[]写入一个byte[] 我想过使用DataOutputStream来解决使用writeInt(int i)和write(byte[] b)的数据写入,并且为了能够将它放入一个字节数组,我应该使用ByteArrayOutputStream方法toByteArray(). 我知道这个类使用Wrapper模式,所以我有两个选择: DataOutputStream w = new DataOutputStream(new ByteArrayOutputStream()); 要么 ByteArrayOutputStream w = new ByteArrayOutputStream(new DataOutputStream()); 但在这两种情况下,我都“松散”了一种方法。 在第一种情况下,我无法访问toByteArray()方法,而在第二种情况下,我无法访问writeInt()方法。 我应该如何一起使用这些课程?

为什么DataOutputStream.writeUTF()在开头添加额外的2个字节?

当我尝试使用sax在套接字上解析xml时,我遇到了一个奇怪的现象。 经过分析,我注意到DataOutputStream在我的数据前添加了2个字节。 DataOutputStream发送的消息: 0020 50 18 00 20 0f df 00 00 00 9d 3c 3f 78 6d 6c 20 P.. …. .. yongmook kim..10 0000 使用Transformer发送消息: 0020 50 18 00 20 b6 b1 00 00 3c 3f 78 6d 6c 20 76 65 P.. …. yongmook kim 00a0 c2 a7 3c 2f 6e 69 […]