jjzjj

DataInputStream

全部标签

java - DataInputStream vs InputStreamReader,试图从概念上理解两者

暂时我的理解是:DataInputStream是一个InputStream子类,因此它读取和写入字节。如果您正在读取字节并且您知道它们都将是ints或其他一些原始数据类型,那么你可以读取这些byte使用DataInputStream直接进入原语.问题:在读取内容之前,您是否需要知道正在读取的内容的类型(整数、字符串等)?整个文件是否需要包含一种原始类型?我的问题是:为什么不使用InputStreamReader环绕InputStream的字节数据?使用这种方法,您仍然在读取字节,然后将它们转换为表示字符的整数。哪些整数表示哪些字符取决于指定的字符集,例如“UTF-8”。问题:在什么情况

java - 用 BC 验证分离的签名

如何使用Java中的BouncyCaSTLe提供程序验证分离的签名(CMS/pkcs#7签名)?目前,我的下面的代码抛出异常消息message-digestattributevaluedoesnotmatchcalculatedvalueSecurity.addProvider(newBouncyCastleProvider());Filef=newFile(filename);byte[]buffer=newbyte[(int)f.length()];DataInputStreamin=newDataInputStream(newFileInputStream(f));in.read

java - DataInputStream\DataOutputStream 的性能

我目前正在使用缓冲流来读写一些文件。在这两者之间,我做了一些数学处理,其中一个符号是一个字节。阅读:InputStreaminput=newFileInputStream(outputname)input.read(byte[]b,intoff,intlen)写:OutputStreamoutput=newBufferedOutputStream(newFileOutputStream(outputname),OUTPUTBUFFERSIZE)output.write((byte)byteinsideaint);现在我需要添加一些标题数据,并支持短符号。我想使用DataInputStr

java - 要从 Java 中的 DataInputStream 读取的未知缓冲区大小

我有以下声明:DataInputStreamis=newDataInputStream(process.getInputStream());我想打印这个输入流的内容,但我不知道这个流的大小。我应该如何读取这个流并打印它? 最佳答案 所有流的共同点是长度是事先不知道的。使用标准InputStream通常的解决方案是简单地调用read直到-1被退回。但我假设,你已经包装了一个标准的InputStream用DataInputStream有一个很好的理由:解析二进制数据。(注意:Scanner仅适用于文本数据。)JavaDoc对于DataI

java - 需要数据输入流

有什么区别FileInputStreamfstream=newFileInputStream("file1.txt");BufferedReaderbr=newBufferedReader(newInputStreamReader(fstream));和FileInputStreamfstream=newFileInputStream("file1.txt");DataInputStreamin=newDataInputStream(fstream);BufferedReaderbr=newBufferedReader(newInputStreamReader(in));我们真的需要D

java - 关闭 DataInputStream 是否也会关闭 FileInputStream?

FileInputStreamfstream=newFileInputStream(someFile.getPath());DataInputStreamin=newDataInputStream(fstream);如果我调用in.close(),它还会关闭fstream吗?我的代码给出如下GC异常:java.lang.OutOfMemoryError:超出GC开销限制 最佳答案 是的,DataInputStream.close()也会关闭您的FileInputStream。这是因为DataInputStream继承了FilterI

java - 如何关闭Java Input Streams?

在下面的代码中:DataInputStreamin=newDataInputStream(newBufferedInputStream(newFileInputStream(file)));in.close();除了关闭“顶级”流之外,我还需要关闭另外两个流吗? 最佳答案 如果您查看DataInputStream的源代码,您会发现它也关闭了底层流。所以你不需要。这对于所有类型的流都是(或应该是)正确的。 关于java-如何关闭JavaInputStreams?,我们在StackOverf

io - DataInputStream.skipBytes(n) 什么时候不能跳过 n 个字节?

SunDocumentationforDataInput.skipBytes指出它“试图从输入流中跳过n个字节的数据,并丢弃跳过的字节。但是,它可能会跳过一些较小数量的字节,可能为零。这可能是由多种情况中的任何一种引起的;在跳过n个字节之前到达文件末尾只是一种可能性。”除了到达文件末尾,为什么skipBytes()不能跳过正确的字节数?(我使用的DataInputStream将包装一个FileInputStream或一个PipedInputStream。)如果我确实想跳过n个字节并抛出一个EOFException如果这导致我转到文件末尾,我应该使用readFully()并忽略生成的字节

java - DataInputStream.read() 与 DataInputStream.readFully()

我正在制作一个简单的TCP/IP套接字应用这样做有什么不同:DataInputStreamin=newDataInputStream(clientSocket.getInputStream());byte[]buffer=newbyte[100];in.readFully(buffer);与这样做相比:DataInputStreamin=newDataInputStream(clientSocket.getInputStream());byte[]buffer=newbyte[100];in.read(buffer);我查看了文档,它们具有完全相同的描述。readFully()和rea

java - 中断 Java DataInputStream readFully()

我有一个从服务器流式传输视频(MJPEG)的Java小程序。我用C#(Windows服务)写了一个代理服务器,放在小程序和多个视频服务器之间。HTML/CSS/Js前端与Java小程序一起使用。所有功能都运行良好(终于!!!),除了一件事。视频服务器允许您通过REST接口(interface)回放录制的视频。剪辑完成后,服务器会保持连接打开,以防您要向其发送倒带或搜索等命令。该剪辑在小程序中播放良好,直到结束。如果您尝试开始一个新剪辑(这需要从Javscript向小程序发送命令),浏览器会卡住。但是,使用相同连接的后续命令会起作用,例如播放、暂停和搜索。如果我停止Windows服务,浏