我在开发阶段,我有两个模块,从一个我得到输出作为OutputStream
第二个,只接受InputStream
.你知道如何转换OutputStream
到InputStream
(而不是相反,我是说真的这样),我将能够这两部分连接?
谢谢
有人向我解释什么InputStream
和OutputStream
是谁?
我感到困惑的用例都InputStream
和OutputStream
.
如果您还可以包含一段代码以与您的解释一起使用,那就太棒了.谢谢!
我HTTPURLConnection
用来连接到Web服务.我知道如何使用,HTTPURLConnection
但我想了解它是如何工作的.基本上,我想知道以下内容:
HTTPURLConnection
尝试建立与给定URL的连接?getOutputStream
和getInputStream
外行的任期?我注意到,当我试图连接到服务器宕机,我得到Exception
的getOutputStream
.这是否意味着HTTPURLConnection
我只会在调用时开始建立连接getOutputStream
?怎么样getInputStream
?因为我只能得到响应getInputStream
,那么这是否意味着我还没有发送任何请求getOutputStream
但只是建立连接?HttpURLConnection
我调用时是否回到服务器请求响应getInputStream
?openConnection
只是创建一个新的连接对象,但尚未建立任何连接?java inputstream outputstream urlconnection httpurlconnection
我正在写一段代码:
OutputStream outputStream = new FileOutputStream(createdFile);
GZIPOutputStream gzipOutputStream = new GZIPOutputStream(outputStream);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(gzipOutputStream));
Run Code Online (Sandbox Code Playgroud)
我是否需要关闭以下每个流或作者?
gzipOutputStream.close();
bw.close();
outputStream.close();
Run Code Online (Sandbox Code Playgroud)
或者只关闭最后一个流好吗?
bw.close();
Run Code Online (Sandbox Code Playgroud) 我的数据库表中有一个blob列,我必须byte[]
在我的Java程序中使用它作为映射并使用这些数据我必须将其转换为InputStream
或OutputStream
.但是当我这样做时,我不知道内部会发生什么.任何人都能简单地向我解释一下当我进行这种转换时会发生什么吗?
我需要指定一个OutputStream
我正在使用的API,但我实际上并不需要输出.Java有OutputStream
相当于> /dev/null
?
我用谷歌搜索找不到权威的答案.在Java servlet中,可以通过response.getOutputStream()或response.getWriter()访问响应主体.应该在写入之后在此流上调用.close()吗?
一方面,Blochian劝告总是关闭输出流.另一方面,我认为在这种情况下不存在需要关闭的底层资源.套接字的打开/关闭在HTTP级别进行管理,以允许诸如持久连接之类的事情.
java9中的更新:https://docs.oracle.com/javase/9/docs/api/java/io/InputStream.html#transferTo-java.io.OutputStream-
我看到了一些相似的,但不是我需要的线程.
我有一个服务器,它基本上从客户端,客户端A接收输入,并逐字节转发到另一个客户端,客户端B.
我想将客户端A的输入流与客户端B的输出流连接起来.这可能吗?有什么方法可以做到这一点?
此外,这些客户端正在发送彼此有时间敏感的消息,因此缓冲不会.我不想要500的缓冲区和客户端发送499个字节,然后我的服务器在转发500个字节时保持关闭,因为它没有收到填充缓冲区的最后一个字节.
现在,我正在解析每条消息以找到它的长度,然后读取长度字节,然后转发它们.我想(并测试)这比读取一个字节并反复转发一个字节更好,因为这将非常慢.我也不想使用缓冲区或计时器,因为我在上一段中说过 - 我不希望消息等待很长时间才能通过,因为缓冲区未满.
这样做的好方法是什么?
在Java中,我首先实例化ZipOutputStream还是首先实例化BufferedOutputStream?例:
FileOutputStream dest = new FileOutputStream(file);
ZipOutputStream zip = new ZipOutputStream(new BufferedOutputStream(dest));
// use zip output stream to write to
Run Code Online (Sandbox Code Playgroud)
要么:
FileOutputStream dest = new FileOutputStream(file);
BufferedOutputStream out = new BufferedOutputStream(new ZipOutputStream(dest));
// use buffered stream to write to
Run Code Online (Sandbox Code Playgroud)
在我非科学的时间里,我似乎无法在这里说出很多不同之处.我在Java API中看不到任何表明这些方法之一是必要的还是首选的.有什么建议?似乎首先压缩输出然后缓冲它以进行写入会更有效.
#include <iostream>
using namespace std;
int main()
{
char c1 = 0xab;
signed char c2 = 0xcd;
unsigned char c3 = 0xef;
cout << hex;
cout << c1 << endl;
cout << c2 << endl;
cout << c3 << endl;
}
Run Code Online (Sandbox Code Playgroud)
我预计输出如下:
ab
cd
ef
Run Code Online (Sandbox Code Playgroud)
然而,我一无所获.
我想这是因为cout总是将'char','signed char'和'unsigned char'视为字符而不是8位整数.但是,'char','signed char'和'unsigned char'都是完整的类型.
所以我的问题是:如何通过cout将字符输出为整数?
PS:static_cast(...)很难看,需要更多的工作来修剪额外的比特.
outputstream ×10
java ×9
inputstream ×5
io ×3
bytearray ×1
c++ ×1
file-io ×1
iostream ×1
servlets ×1
writer ×1