草庐IT

inputstreams

全部标签

java - 在 Java 中测试空 InputStream

你们如何测试一个空的InputStream?我知道InputStream设计用于处理远程资源,因此在实际读取它之前,您无法知道它是否存在。我不能使用read(),因为当前位置会改变,使用mark()并为此重置似乎是不合适的。问题是,有时无法测试read()是否返回-1,因为如果您有一个流并且某些第三方库使用它,您需要在将它发送到那里之前测试它是否为空。我所说的空InputStreams是指这些newByteArrayInputStream(newbyte[0]) 最佳答案 您可以将InputStream包装在PushbackInpu

java - Jersey InputStream 在过滤器中被修改。无法弄清楚如何访问 Jersey Resource 中修改后的 inputStream

如HowtouseJerseyinterceptorstogetrequestbody中所述,我正在修改ContainerRequestFilter中的EntityInputStream。publicfilter(ContainerRequestrequest){ByteArrayOutputStreamout=newByteArrayOutputStream();InputStreamin=request.getEntityInputStream();try{Readerwriter.writeTo(in,out);byte[]requestEntity=out.toByteArra

java - 缓冲后台 InputStream 实现

我已经编写了后台InputStream(和OutputStream)实现来包装其他流,并在后台线程上提前读取,主要允许解压缩/压缩发生在不同线程处理解压流。这是一个相当标准的生产者/消费者模型。这似乎是一种通过读取、处理和写入数据的简单进程充分利用多核CPU的简单方法,从而可以更有效地利用CPU和磁盘资源。也许“高效”不是最好的词,但与直接从ZipInputStream读取并直接写入ZipOutputStream相比,它提供了更高的利用率,而且我更感兴趣的是减少了运行时间。我很高兴发布代码,但我的问题是我是否正在重新发明现有(和更频繁使用的)库中现成的东西?编辑-发布代码...我的Ba

java.lang.IllegalArgumentException : Your InputStream was neither an OLE2 stream, 也不是 OOXML 流

当我读取Excel文件(.xls格式)时,我不断收到异常:java.lang.IllegalArgumentException:YourInputStreamwasneitheranOLE2stream,noranOOXMLstream.我搜索了一下,发现如果输入流不支持重置或标记,我应该用pushbackStream包装它。我的输入流不支持标记\重置。那么使用pushbackStream是唯一的选择吗?如何使用它?它有什么用?谢谢 最佳答案 YourInputStreamwasneitheranOLE2stream,noranOO

java - 为什么在 java.io.InputStream 中只有 mark() 和 reset() 方法同步?

不明白为什么mark()和reset()是同步的,为什么read()不是? 最佳答案 java.io.InputStream是一个抽象类。它有一个默认的标记/重置实现,只在重置时抛出异常,告诉它不受支持,因此不支持它的子类不需要编写自己的方法来抛出异常。"synchronized"在默认情况下没有用,抛出异常。任何支持它的子类都必须重写这些方法,并且同步不会被继承,因此被重写的方法可能同步也可能不同步。我认为没有任何影响。我想这是一个没有后果的设计缺陷,或者它可能是一个警告,所以程序员将它子类化以同步这些方法,因为它应该那样做。

java - 读取 JAX-RS body InputStream 两次

我有一个JAX-RS日志过滤器来记录请求和响应的详细信息,如下所示:publicclassLoggingFilterimplementsContainerRequestFilter,ContainerResponseFilter{@Overridepublicvoidfilter(finalContainerRequestContextrequestContext)throwsIOException{...Stringbody=getBody(request);...if(LOGGER.isDebugEnabled()){LOGGER.debug("request:{}",httpRe

java - 如何在 java 中从 jar 加载嵌入字体作为 InputStream?

如果我从Eclipse运行应用程序,那么一切都完成了。但是如果将它导出到jar,我会得到一个异常。java.io.IOException:Problemreadingfontdata.atjava.awt.Font.createFont(UnknownSource)Hereisthepackagetree还有我的代码(在SzervizPrint.java文件中):InputStreamistream=getClass().getResourceAsStream("/resources/SerpentineBolditalic.ttf");FontmyFont=Font.createFo

java - 从不同于网络(通过 Amazon S3)的本地文件读取 InputStream 对象有何不同?

我不认为从本地文件读取的输入流对象与从网络源(在本例中为AmazonS3)读取的输入流对象之间没有区别,所以希望有人能启发我。这些程序在运行Centos6.3的虚拟机上运行。两种情况下的测试文件都是10MB。本地文件代码:InputStreamis=newFileInputStream("/home/anyuser/test.jpg");intread=0;intbuf_size=1024*1024*2;byte[]buf=newbyte[buf_size];ByteArrayOutputStreambaos=newByteArrayOutputStream(buf_size);lon

java - 为什么 InputStream 和 OutputStream 实现了 Closeable 而 Socket 没有?

在一个方法里看到过这个评论://IwonderwhySunmadeinputandoutputstreamsimplementCloseableandleftSocketbehind它将阻止创建实现Closeable的包装器匿名内部类,后者将其close方法委托(delegate)给Socket的实例。 最佳答案 Closeable是在Java5中引入的,而Socket是在JDK1.0中引入的。在Java7SocketwillbeCloseable.编辑您可以使用反射来关闭Java4/5/6中的任何“可关闭”对象,只需测试是否存在关

Java InputStream读取问题

我有一个Java类,我在其中通过InputStream读取数据byte[]b=null;try{b=newbyte[in.available()];in.read(b);}catch(IOExceptione){e.printStackTrace();}当我从IDE(Eclipse)运行我的应用程序时,它工作得很好。但是当我导出项目并将其打包在JAR中时,读取命令不会读取所有数据。我该如何解决?此问题主要发生在InputStream是文件(~10kb)时。谢谢! 最佳答案 通常我更喜欢在从输入流读取时使用固定大小的缓冲区。正如evi