标签: inputstream

相当于IOUtils.toString(InputStream)的番石榴

Apache Commons IO有一个很好的方便方法IOUtils.toString()来读取InputStream一个String.

因为我试图从Apache Commons转移到Guava:在番石榴中是否有相同的东西?我查看了com.google.common.io包中的所有类,我找不到任何简单的东西.

编辑:我理解并欣赏charsets的问题.事实上,我知道所有的源都是ASCII(是的,ASCII,而不是ANSI等),所以在这种情况下,编码对我来说不是问题.

java io inputstream guava

105
推荐指数
5
解决办法
6万
查看次数

在Scala中将InputStream转换为String的惯用法

我有一个方便的函数,我在Java中用于将InputStream转换为String.这是对Scala的直接翻译:

  def inputStreamToString(is: InputStream) = {
    val rd: BufferedReader = new BufferedReader(new InputStreamReader(is, "UTF-8")) 
    val builder = new StringBuilder()    
    try {
      var line = rd.readLine 
      while (line != null) { 
        builder.append(line + "\n")
        line = rd.readLine
      }
    } finally {
      rd.close
    }
    builder.toString
  }
Run Code Online (Sandbox Code Playgroud)

在scala中有没有惯用的方法呢?

string scala inputstream

104
推荐指数
3
解决办法
5万
查看次数

从HttpURLConnection获取InputStream对象时出现FileNotFoundException

我正在尝试使用HttpURLConnection向网址发送帖子请求(在java中使用cUrl).请求的内容是xml,在结束时,应用程序处理xml并将记录存储到数据库,然后以xml字符串的形式发回响应.该应用程序在本地托管在apache-tomcat上.

当我从终端执行此代码时,会按预期将一行添加到数据库中.但是从连接获取InputStream时会抛出异常,如下所示

java.io.FileNotFoundException: http://localhost:8080/myapp/service/generate
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1401)
    at org.kodeplay.helloworld.HttpCurl.main(HttpCurl.java:30)
Run Code Online (Sandbox Code Playgroud)

这是代码

public class HttpCurl {
    public static void main(String [] args) {

        HttpURLConnection con;

        try {
            con = (HttpURLConnection) new URL("http://localhost:8080/myapp/service/generate").openConnection();
            con.setRequestMethod("POST");
            con.setDoOutput(true);
            con.setDoInput(true);

            File xmlFile = new File("test.xml");

            String xml = ReadWriteTextFile.getContents(xmlFile);                

            con.getOutputStream().write(xml.getBytes("UTF-8"));
            InputStream response = con.getInputStream();

            BufferedReader reader = new BufferedReader(new InputStreamReader(response));
            for (String line ; (line = reader.readLine()) != null;) {
                System.out.println(line);
            }
            reader.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException …
Run Code Online (Sandbox Code Playgroud)

java inputstream filenotfoundexception httpurlconnection

96
推荐指数
5
解决办法
11万
查看次数

将InputStream读取为UTF-8

我试图text/plain通过互联网逐行读取文件.我现在的代码是:

URL url = new URL("http://kuehldesign.net/test.txt");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
LinkedList<String> lines = new LinkedList();
String readLine;

while ((readLine = in.readLine()) != null) {
    lines.add(readLine);
}

for (String line : lines) {
    out.println("> " + line);
}
Run Code Online (Sandbox Code Playgroud)

该文件test.txt包含¡Hélló!,我正在使用它来测试编码.

当我查看OutputStream(out)时,我将其视为> ¬°H?©ll??!.我不相信这是一个问题,OutputStream因为我可以out.println("é");没有问题.

阅读的任何想法都形成InputStreamUTF-8?谢谢!

java inputstream utf-8

94
推荐指数
3
解决办法
19万
查看次数

如何从java.lang.String获取java.io.InputStream?

我有一个String我想用作的InputStream.在Java 1.0中,你可以使用java.io.StringBufferInputStream,但是@Deprecrated(有充分的理由 - 你不能指定字符集编码):

此类不能将字符正确转换为字节.从JDK 1.1开始,从字符串创建流的首选方法是通过StringReader 类.

您可以创建一个java.io.Readerwith java.io.StringReader,但没有适配器可以创建Reader和创建InputStream.

我找到了一个古老的虫子,要求一个合适的替代物,但是没有这样的东西存在 - 据我所知.

经常建议的解决方法是java.lang.String.getBytes()用作输入java.io.ByteArrayInputStream:

public InputStream createInputStream(String s, String charset)
    throws java.io.UnsupportedEncodingException {

    return new ByteArrayInputStream(s.getBytes(charset));
}
Run Code Online (Sandbox Code Playgroud)

但这意味着将整个String内存实现为一个字节数组,并且无法实现流的目的.在大多数情况下,这不是什么大问题,但我一直在寻找能够保留流的意图的东西 - 尽可能少的数据在内存中实现(重新).

java string inputstream

92
推荐指数
4
解决办法
8万
查看次数

在Kotlin中,如何将InputStream的全部内容读入String?

我最近看到了用于InputStream在Kotlin中读取字符串的全部内容的代码,例如:

// input is of type InputStream
val baos = ByteArrayOutputStream()
input.use { it.copyTo(baos) }
val inputAsString = baos.toString()
Run Code Online (Sandbox Code Playgroud)

并且:

val reader = BufferedReader(InputStreamReader(input))
try {
    val results = StringBuilder()
    while (true) { 
        val line = reader.readLine()
        if (line == null) break
        results.append(line) 
    }
    val inputAsString = results.toString()
} finally {
    reader.close()
}
Run Code Online (Sandbox Code Playgroud)

甚至这个看起来更顺畅,因为它会自动关闭InputStream:

val inputString = BufferedReader(InputStreamReader(input)).useLines { lines ->
    val results = StringBuilder()
    lines.forEach { results.append(it) }
    results.toString()
}
Run Code Online (Sandbox Code Playgroud)

或者那个略有变化:

val results = StringBuilder() …
Run Code Online (Sandbox Code Playgroud)

inputstream kotlin

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

从OutputStream创建InputStream的最有效方法

此页面:http://blog.ostermiller.org/convert-java-outputstream-inputstream 描述了如何从OutputStream创建InputStream:

new ByteArrayInputStream(out.toByteArray())
Run Code Online (Sandbox Code Playgroud)

其他替代方案是使用PipedStreams和新线程,这很麻烦.

我不喜欢将许多兆字节复制到内存字节数组中的新内容.有没有一个库可以更有效地完成这项工作?

编辑:

根据Laurence Gonsalves的建议,我尝试了PipedStreams,事实证明它们并不难以应对.这是clojure中的示例代码:

(defn #^PipedInputStream create-pdf-stream [pdf-info]
  (let [in-stream (new PipedInputStream)
        out-stream (PipedOutputStream. in-stream)]
    (.start (Thread. #(;Here you write into out-stream)))
    in-stream))
Run Code Online (Sandbox Code Playgroud)

java io inputstream stream bytearrayoutputstream

80
推荐指数
4
解决办法
9万
查看次数

Reader和InputStream有什么区别?

Reader和InputStream有什么区别?什么时候用?如果我可以使用Reader读取字符,为什么我会使用inputstream,我想读取对象?

java inputstream file filereader fileinputstream

80
推荐指数
3
解决办法
5万
查看次数

从类路径资源获取输入流(XML文件)

在Java Web应用程序中,假设我想获取XML文件的InputStream,该文件放在CLASSPATH中(即在sources文件夹中),我该怎么做?

java file-io inputstream

77
推荐指数
5
解决办法
16万
查看次数

如何将InputStream转换为虚拟文件

我有一个方法,希望其中一个输入变量是java.io.File类型,但我得到的只是InputStream.另外,我无法更改方法的签名.

如何将InputStream转换为File类型,而不实际将文件写入文件系统?

java inputstream file

75
推荐指数
2
解决办法
9万
查看次数