标签: inputstream

在Java中,如何将InputStream转换为字节数组(byte [])?

我的背景是.net,我对Java很新.我正在为我们公司的java团队做一些工作,架构师需要我实现一个带有InputStream(java.io)对象的方法.为了实现方法的目的,我需要将其转换为字节数组.是否有捷径可寻?

java inputstream type-conversion

18
推荐指数
2
解决办法
4万
查看次数

18
推荐指数
3
解决办法
1万
查看次数

有没有办法用标记功能创建FileInputStream?

是否有任何可能的方法来创建FileInputStream标记支持的功能true

java inputstream

18
推荐指数
3
解决办法
1万
查看次数

如何将文件读入InputStream,然后将其写入Scala中的OutputStream?

我正在尝试使用Scala中的基本Java代码从文件中读取并写入OutputStream,但是当我在Scala中使用通常的while(!= -1)时,会给出一个警告"比较Unit和Int的类型! =总是会产生真实的".

代码如下:

    val file = this.cache.get(imageFileEntry).getValue().asInstanceOf[File]
    response.setContentType( "image/%s".format( imageDescription.getFormat() ) )

    val input = new BufferedInputStream( new FileInputStream( file ) )
    val output = response.getOutputStream()

    var read : Int = -1

    while ( ( read = input.read ) != -1 ) {
        output.write( read )
    }

    input.close()
    output.flush()
Run Code Online (Sandbox Code Playgroud)

我应该如何从输入流写入Scala中的输出流?

我最感兴趣的是类似Scala的解决方案.

java integration scala inputstream outputstream

18
推荐指数
4
解决办法
1万
查看次数

Android JSON CharSet UTF-8问题

我目前正在开发一个Android应用程序,它从提供JSON数据的API获取数据.我将JSON数据的项目存储为字符串,导致出现一些奇怪的字符(例如'Â').我理解这与字符集有关,因此我将InputStreamReader设置为"UTF-8",但它似乎没有解决问题.

       URL hukd = new URL(requestUrl);
        URLConnection tc = hukd.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(tc.getInputStream(), "UTF-8"));
        String line = in.readLine();
        Log.d("line :", line);
        JSONObject obj = new JSONObject(line);
        JSONArray ja = obj.getJSONObject("deals").getJSONArray("items");
        for (int i = 0; i < ja.length(); i++) { // each deal
            JSONObject jo = (JSONObject) ja.get(i);
            // make the deal
            Deal d = new Deal(jo.getString("title"),
                    jo.getString("description"),
                    jo.getString("price"),jo.getString("temperature"), 
                    jo.getJSONObject("merchant").getString("name"),
                    jo.getString("deal_image"),
                    jo.getString("deal_image_highres"));
            listItems.add(d);
            Log.d("Deal:", d.toString());
        }
Run Code Online (Sandbox Code Playgroud)

Log.d"line"给出

01-30 19:56:01.909: D/line :(610): {"deals":{"items":[{"title":"Absolute steal ** Harmony one remote …
Run Code Online (Sandbox Code Playgroud)

android json inputstream utf-8 character-encoding

18
推荐指数
1
解决办法
3万
查看次数

使用InputStream读取文本文件

如何读取Android应用程序中的文本文件:

"1.something written
2.in this file
3.is to be read by
4.the InputStream
..."
Run Code Online (Sandbox Code Playgroud)

所以我可以返回一个字符串,如:

"something written\nin this file\nis to be read by\nthe InputStream"
Run Code Online (Sandbox Code Playgroud)

我想到的是(伪代码):

make an inputstream
is = getAssest().open("textfile.txt");  //in try and catch
for loop{
string = is.read() and if it equals "." (i.e. from 1., 2., 3. etc) add "/n" ...
}
Run Code Online (Sandbox Code Playgroud)

java android inputstream

18
推荐指数
2
解决办法
7万
查看次数

Java:FilterInputStream与其他流相比有哪些优点和用途

我一直在阅读InputStream,FileInputStream,ByteArrayInputStream以及它们的使用方式似乎非常清楚(输出流也是如此).

我正在努力的是理解FilterInputStream和FilterOutputStream的用法:

  • 与其他流类相比,使用它有什么好处?
  • 我应该什么时候使用它?
  • 请提供理论解释和基本示例.

java inputstream outputstream stream

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

当我关闭BufferedInputStream时,底层的InputStream是否也关闭了?

InputStream in = SomeClass.getInputStream(...);
BufferedInputStream bis = new BufferedInputStream(in);

try {
    // read data from bis
} finally {
    bis.close();
    in.close();    
}
Run Code Online (Sandbox Code Playgroud)

javadoc for BufferedInputStream.close()未提及底层流是否已关闭:

关闭此输入流并释放与该流关联的所有系统资源.关闭流后,进一步的read(),available(),reset()或skip()调用将抛出IOException.关闭先前关闭的流无效.

显式调用是in.close()必要的,还是应该通过调用来关闭bis.close()

java inputstream bufferedinputstream

18
推荐指数
3
解决办法
7252
查看次数

从Swift中的NSInputStream接收数据

我尝试在Swift中使用NSOutputStream和NSInputStream发送和接收数据.发送数据运行良好,但我对接收有一些疑问.

我找到了一个处理NSStreamEvent的解决方案,我试过了.

首先是我初始化连接的功能:

func initNetworkCommunication(){  
    var host : CFString = "127.0.0.1"
    var port : UInt32 = 7001
    var readstream : Unmanaged<CFReadStream>?
    var writestream : Unmanaged<CFWriteStream>?
    CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, host, port, &readstream, &writestream)

    inputstream = readstream!.takeRetainedValue()
    outputstream = writestream!.takeRetainedValue()

    inputstream.delegate = self
    outputstream.delegate = self


    inputstream.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)
    outputstream.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)

    inputstream.open()
    outputstream.open()   
}
Run Code Online (Sandbox Code Playgroud)

这部分正在运作.我已将委托设置为self,因此我应该能够处理此类中的NSStreamEvents.

func stream(aStream: NSStream, handleEvent eventCode: NSStreamEvent) {
    switch (eventCode){
    case NSStreamEvent.OpenCompleted:
        NSLog("Stream opened")
        break
    case NSStreamEvent.HasBytesAvailable:
        NSLog("HasBytesAvailable")
        break
    case NSStreamEvent.ErrorOccurred:
         NSLog("ErrorOccurred")
        break
    case NSStreamEvent.EndEncountered:
        NSLog("EndEncountered")
        break
    default:
        NSLog("unknown.") …
Run Code Online (Sandbox Code Playgroud)

inputstream nsstream swift

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

在Full GC之后导致套接字连接变慢的原因是什么?

我们有一个客户端服务器应用,1个服务器,大约10个客户端.它们使用自定义查询通过tcp套接字进行通信.

该系统运行平稳了好几个月,但在某些时候,在每日计划服务器FULL GC耗时约50秒后,我们发现客户端发送的查询与从服务器收到的响应之间的时间很长,> 10-20s.系统恢复3个小时后,一切都恢复正常.

在调查问题时,我们发现:

  1. 客户端和服务器上都没有垃圾回收问题
  2. 服务器上的查询处理时间很短.
  3. 服务器上的负载很高.
  4. 网络带宽未饱和.
  5. FULL GC期间未重置连接(每日FULL GC是正常事件,直到那时)
  6. 机器和操作系统最近从Centos 6(内核2.6.32)更改为Centos 7(内核3.10.0),但新配置已经过广泛测试.Oracle JDK版本也从1.7.65变为1.7.75.

我们在服务器上进行了一次线程转储:

java.lang.Thread.State: RUNNABLE
    at java.io.FilterInputStream.read(FilterInputStream.java:83)
    at util.network.BytesBasedSocketConnection$ReadConnectionRunnable.run(BytesBasedSocketConnection.java:293)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)

FilterInputStream.read()如下:

    public int read() throws IOException {
    return in.read();
}
Run Code Online (Sandbox Code Playgroud)

in我们的代码是一个BufferedInputStream.

问题是:为什么大多数连接在完全GC暂停后放慢了?为什么stacktrace结束FilterInputStream.read()?它不应该BufferedInputStream在套接字输入流中的某个地方结束吗?这读取会导致服务器上的高负载吗?

我们用于阅读的代码:

int constructLength = _socketDIS.readInt();
ByteArrayOutputStream constructBOAS = new ByteArrayOutputStream(constructLength);
for (int i = 0; i != constructLength; i++) …
Run Code Online (Sandbox Code Playgroud)

java sockets networking high-load inputstream

18
推荐指数
2
解决办法
1235
查看次数