标签: inputstream

将输入流转换为对象列表

我必须制作一个 jar 来点击 API 来获取人员详细信息列表,该列表基本上有四个字段:id、name、salary、department。

我正在使用 apache httpclient 执行 get 请求,该请求在点击 API 时为我提供了 httpentity。

httpentity提供了一个获取response内容的方法,但它返回的是inputstream。

在通过 inputreader 读取此输入流并将其打印出来时,我确认它为我提供了人员详细信息列表。

但我不知道如何将其转换为人员详细信息列表。

那是 PersonDetails 对象:-

    public class PersonDetails {
        private UUID id;
        private String name;
        private String department;
        private Integer salary;
    
        public UUID getId() {
            return id;
        }
    
        public void setId(UUID id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getDepartment() {
            return department;
        }
    
        public void setDepartment(String …
Run Code Online (Sandbox Code Playgroud)

inputstream list jackson apache-httpclient-4.x

2
推荐指数
1
解决办法
7788
查看次数

iOS 套接字输入流阻塞 UI,但未安排在主线程上

当我的应用程序通过网络输入流接收数据时,会在主线程上调用相应的streamDelegate。当接收大量数据时,UI 阻塞非常明显。我试图从 a 中触发所有相应的功能

DispatchQueue.global(qos: .whatever).sync()
Run Code Online (Sandbox Code Playgroud)

但尽管

inputStream.schedule(in: .current,forMode: .commonModes)
Run Code Online (Sandbox Code Playgroud)

在该队列中被调用,streamDelegate 仍然在 Main 上被调用?!

从我到现在为止阅读和理解的内容来看,.sync 无论如何都不会帮助我,因为它仍然会阻止 UI,因为它会等待完成,然后再将控制权交还给 UI。所以我对 .async 进行了同样的尝试。当所有流内容都在异步线程上工作时,outputStream 工作正常,但 inputStreams 的streamDelegate 不会触发。我没有收到回复。

我究竟做错了什么?

class AppDelegate {
  let mSocketClass = SocketClass()
  func application(_:){
    DispatchQueue.global(qos: .utility).async(){
      mSocketClass.setupNetworkCommunication()
      mSocketClass.sendStuff()
    }
  } 
}
Run Code Online (Sandbox Code Playgroud)

class SocketClass:NSObject {
  var mInputStream: InputStream!
  var mOutputStream: OutputStream!

  func setupNetworkCommunication(){
    var readStream: Unmanaged<CFReadStream>?
    var writeStream: Unmanaged<CFWriteStream>?
    CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, "example.com" as CFString, 1234, &readStream, &writeStream)
    mInputStream = readStream!.takeRetainedValue()
    mOutputStream = writeStream!.takeRetainedValue()
    mInputStream.schedule(in: .current, forMode: .commonModes) //happens on thread other …
Run Code Online (Sandbox Code Playgroud)

inputstream grand-central-dispatch ios swift

2
推荐指数
1
解决办法
1505
查看次数

java:加快阅读外来人物

我当前的代码需要从Web读取外来字符,目前我的解决方案有效,但速度很慢,因为它使用InputStreamReader读取char字符.无论如何要加快速度并完成工作吗?

// Pull content stream from response
        HttpEntity entity = response.getEntity();
        InputStream inputStream = entity.getContent();

        StringBuilder contents = new StringBuilder();
        int ch;
        InputStreamReader isr = new InputStreamReader(inputStream, "gb2312");
          // FileInputStream file = new InputStream(is);
         while( (ch = isr.read()) != -1)
             contents.append((char)ch);
         String encode = isr.getEncoding();

         return contents.toString();
Run Code Online (Sandbox Code Playgroud)

java inputstream

1
推荐指数
1
解决办法
465
查看次数

使用C++输入流可以很好地播放空间

首先考虑这个示例C++代码:

std::string input1, input2, input3;
std::cout << "Enter Input 1: ";
std::cin >> input1;
std::cout << std::endl << "Enter Input 2: ";
std::cin >> input2;
std::cout << std::endl << "Enter Input 3: ";
std::cin >> input3;
Run Code Online (Sandbox Code Playgroud)

如果对于input1,我输入类似"Good day neighbors"的内容,则input1设置为"Good",input2设置为"day",输入3设置为"neighbors".我甚至没有机会为input2和input3设置值.

所以我的问题是:如何在没有它的情况下输入包含空格的文本字符串(缺少更好的术语)分解并溢出到后续的输入流调用中?

提前感谢收到的任何和所有答案.

c++ string inputstream standard-library

1
推荐指数
1
解决办法
676
查看次数

StringBufferInputStream Java中的问题

我想读取一个输入字符串并将其作为UTF8编码的字符串返回.所以我在Oracle/Sun网站上找到了一个使用FileInputStream的示例.我不想读取文件,而是读取字符串,因此我将其更改为StringBufferInputStream并使用下面的代码.方法参数jtext,是一些日文文本.实际上这种方法效果很好.问题是关于已弃用的代码.我不得不放置@SuppressWarnings,因为不推荐使用StringBufferInputStream.我想知道是否有更好的方法来获取字符串输入流?它可以保持原样吗?我花了很长时间试图解决这个问题,我现在不想改变任何东西,我似乎已经破解了它.

            @SuppressWarnings("deprecation")
    private  String readInput(String jtext) {

        StringBuffer buffer = new StringBuffer();
        try {
        StringBufferInputStream  sbis = new StringBufferInputStream (jtext);
        InputStreamReader isr = new InputStreamReader(sbis,
                                  "UTF8");
        Reader in = new BufferedReader(isr);
        int ch;
        while ((ch = in.read()) > -1) {
            buffer.append((char)ch);
        }

        in.close();
        return buffer.toString();
        } catch (IOException e) {
        e.printStackTrace();
        return null;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我想我找到了一个解决方案 - 各种各样:

private  String readInput(String jtext) {

        String n;
        try {
            n = new String(jtext.getBytes("8859_1"));
            return n;
        } catch (UnsupportedEncodingException e) { …
Run Code Online (Sandbox Code Playgroud)

java inputstream

1
推荐指数
1
解决办法
3249
查看次数

如何:将字节数组转换为InputStream

与Apache共享它是非常简单转换InputStreambyte[],

static byte[] toByteArray(InputStream input)

但我找不到相反的方法.将字节数组转换为InputStream对象的最流行/最直接的方法是什么?

提前致谢.

java io bytearray inputstream apache-commons

1
推荐指数
1
解决办法
2182
查看次数

之后调用java的方法向服务器发送实际请求?

例如,我有以下java代码:

URL u = new URL("http://google.com");  
URLConnection c = u.openConnection();  
InputStream s = c.getInputStream();  
int i;  
while ((i = s.read()) != -1) {  
     //do something here  
}  
Run Code Online (Sandbox Code Playgroud)

我无法理解,在哪个时刻(在方法调用之后)java将实际请求发送到服务器?

java connection http inputstream request

1
推荐指数
1
解决办法
128
查看次数

GZipInputStream .read()将零插入缓冲区

我有一个奇怪的程序,GzipInputStream零填充缓冲区的一部分.我有幸知道流中的字节应该是什么样的,我可以看到缓冲区正在填充8个正确的字节和12个零(不应该为零)

BYTES应该看起来像这样----> 0 20 82 22 -91 27 -96 65 66 65 88 32 32 32 32 81 32 0 0 0 100 78

BYTES实际上看起来像这样---> 0 20 82 22 -91 27 -96 65 66 65 0 0 0 0 0 0 0 0 0 0 0 0

前两个字节表示一个整数,用于确定前两个字节之后的可变长度(以字节为单位)的大小.所以在这个例子中,第一个字节是0 20,而在BIG_ENDIAN中,这给我们后续的有效载荷大小为20个字节.

这是我的阅读代码

gzipInputStream = new GZIPInputStream(url.openStream());        

byte[] payload = new byte[2];
gzipInputStream.read(payload);
for(int i=0;i<payload.length;i++){
    System.out.println(payload[i]);
}
int payloadSize = ((payload[0] & 0xFF) << 8) | ((payload[1]) & 0xFF);
//read the next payloadSize …
Run Code Online (Sandbox Code Playgroud)

java binary inputstream gzipinputstream

1
推荐指数
1
解决办法
591
查看次数

如何在调用IOUtils.copy后重新读取InputStream?

我只是用

IOUtils.copy(myInputStream, myOutputStream);
Run Code Online (Sandbox Code Playgroud)

我在调用IOUtils.copy之前看到输入流可以读取而不是之后.

flux.available()
     (int) 1368181 (before)
     (int) 0 (after)
Run Code Online (Sandbox Code Playgroud)

我看到了这方面的一些解释,我看我可以复制 bytes从我InputStreamByteArrayInputStream,然后用mark(0)read(),以多次读取的输入流.

这是得到的代码(正在运行).我发现这段代码非常冗长,如果有更好的解决方案,我想要这样做.

ByteArrayInputStream fluxResetable = new ByteArrayInputStream(IOUtils.toByteArray(myInputStream));
fluxResetable.mark(0);
IOUtils.copy(fluxResetable, myOutputStream);
fluxResetable.reset();
Run Code Online (Sandbox Code Playgroud)

java inputstream

1
推荐指数
1
解决办法
3446
查看次数

内联创建的InputStream是否由GC自动关闭?

我发现了几个类似的问题,但我仍然无法找到问题的答案.

我知道关闭外部流就足够了,它会关闭在线创建的内部流.

BufferedInputStream br = new BufferedInputStream(new FileInputStream(file));
br.close();
Run Code Online (Sandbox Code Playgroud)

考虑下一个例子

Properties props = new Properties();
props.load(new FileInputStream(configPath));
Run Code Online (Sandbox Code Playgroud)

是应该将FileInputStream其分配给变量然后显式关闭(或者使用try-with-resource构造),还是Java GC会在props.load()方法调用之后立即自动关闭它,因为没有对资源的引用?

java garbage-collection inputstream

1
推荐指数
1
解决办法
240
查看次数