不明白为什么mark()和reset()是同步的,为什么read()不是? 最佳答案 java.io.InputStream是一个抽象类。它有一个默认的标记/重置实现,只在重置时抛出异常,告诉它不受支持,因此不支持它的子类不需要编写自己的方法来抛出异常。"synchronized"在默认情况下没有用,抛出异常。任何支持它的子类都必须重写这些方法,并且同步不会被继承,因此被重写的方法可能同步也可能不同步。我认为没有任何影响。我想这是一个没有后果的设计缺陷,或者它可能是一个警告,所以程序员将它子类化以同步这些方法,因为它应该那样做。
我有一个JAX-RS日志过滤器来记录请求和响应的详细信息,如下所示:publicclassLoggingFilterimplementsContainerRequestFilter,ContainerResponseFilter{@Overridepublicvoidfilter(finalContainerRequestContextrequestContext)throwsIOException{...Stringbody=getBody(request);...if(LOGGER.isDebugEnabled()){LOGGER.debug("request:{}",httpRe
类InputStream的JavaDoc说明如下:Readsuptolenbytesofdatafromtheinputstreamintoanarrayofbytes.Anattemptismadetoreadasmanyaslenbytes,butasmallernumbermayberead.Thenumberofbytesactuallyreadisreturnedasaninteger.Thismethodblocksuntilinputdataisavailable,endoffileisdetected,oranexceptionisthrown.这也符合我的经验。例如,
我正在尝试比较InputStream.read()与InputStream.read(byte[]b)的性能。InputStream.read(byte[]b)在某些方面是否更快,给定类InputStreamread(b,off,len)方法只是重复调用方法read()吗? 最佳答案 您不应该混淆InputStream的默认行为和它的大多数子类的行为。OO设计的一个原则是子类可以更改该实现的方法的行为。从InputStream-read(byte[])重复调用read()。publicintread(byteb[],intoff,i
如果我从Eclipse运行应用程序,那么一切都完成了。但是如果将它导出到jar,我会得到一个异常。java.io.IOException:Problemreadingfontdata.atjava.awt.Font.createFont(UnknownSource)Hereisthepackagetree还有我的代码(在SzervizPrint.java文件中):InputStreamistream=getClass().getResourceAsStream("/resources/SerpentineBolditalic.ttf");FontmyFont=Font.createFo
我不认为从本地文件读取的输入流对象与从网络源(在本例中为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
在一个方法里看到过这个评论://IwonderwhySunmadeinputandoutputstreamsimplementCloseableandleftSocketbehind它将阻止创建实现Closeable的包装器匿名内部类,后者将其close方法委托(delegate)给Socket的实例。 最佳答案 Closeable是在Java5中引入的,而Socket是在JDK1.0中引入的。在Java7SocketwillbeCloseable.编辑您可以使用反射来关闭Java4/5/6中的任何“可关闭”对象,只需测试是否存在关
我有一个由OutputStream和InputStream组成的通用套接字实现。完成一些工作后,我将关闭OutputStream。完成此操作后,我的InputStream的read()方法会在无限长的时间内返回-1,而不是像我预期的那样抛出异常。我现在不确定最安全的路线,所以我有几个问题:我可以安全地假设-1只是流关闭时返回?没有办法重新创建IO当连接被强行断开?我应该发送一个数据包来告诉我的InputStream它应该关闭而不是前两种方法吗?谢谢! 最佳答案 -1是流末尾的预期行为。参见InputStream.read():Rea
我的问题是我正在创建一个FTP客户端,到目前为止它的工作完美无缺,除了一个小细节,这一直困扰着我。我需要知道FTP欢迎消息跨越了多少行...这是NotAcceptable!privateSocketconnection;privatePrintWriteroutStream;privateScannerinStream;publicvoidInitiateConnection()throwsIOException{log.Info(this,"Initiatingconnectiontohost:"+host+":"+port);connection=newSocket(host,po
根据Javadocumentation,ClassInputStream服务器中mark方法的readlimit参数用于设置“在mark位置失效前可以读取的最大字节数限制。”。我有一个名为sample.txt的文件,其内容是“hello”。我写了这段代码:importjava.io.*;publicclassInputStream{publicstaticvoidmain(String[]args)throwsIOException{InputStreamreader=newFileInputStream("sample.txt");BufferedInputStreambis=new