标签: io

如何在Java中读取/转换InputStream为String?

如果你有一个java.io.InputStream对象,你应该如何处理该对象并产生一个String


假设我有一个InputStream包含文本数据,并且我想将其转换为a String,所以例如我可以将其写入日志文件.

采取InputStream并将其转换为最简单的方法是String什么?

public String convertStreamToString(InputStream is) {
    // ???
}
Run Code Online (Sandbox Code Playgroud)

java string io inputstream stream

3864
推荐指数
37
解决办法
203万
查看次数

如何从文件内容创建Java字符串?

我一直在使用下面的成语一段时间了.它似乎是最广泛的,至少在我访问过的网站上.

是否有更好/不同的方式将文件读入Java中的字符串?

private String readFile(String file) throws IOException {
    BufferedReader reader = new BufferedReader(new FileReader (file));
    String         line = null;
    StringBuilder  stringBuilder = new StringBuilder();
    String         ls = System.getProperty("line.separator");

    try {
        while((line = reader.readLine()) != null) {
            stringBuilder.append(line);
            stringBuilder.append(ls);
        }

        return stringBuilder.toString();
    } finally {
        reader.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

java string io file-io file

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

循环遍历Bash中的文件内容

如何使用Bash迭代文本文件的每一行?

使用此脚本:

echo "Start!"
for p in (peptides.txt)
do
    echo "${p}"
done
Run Code Online (Sandbox Code Playgroud)

我在屏幕上看到这个输出:

Start!
./runPep.sh: line 3: syntax error near unexpected token `('
./runPep.sh: line 3: `for p in (peptides.txt)'
Run Code Online (Sandbox Code Playgroud)

(后来我想做一些$p比输出到屏幕更复杂的事情.)


环境变量SHELL是(来自env):

SHELL=/bin/bash
Run Code Online (Sandbox Code Playgroud)

/bin/bash --version 输出:

GNU bash, version 3.1.17(1)-release (x86_64-suse-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
Run Code Online (Sandbox Code Playgroud)

cat /proc/version 输出:

Linux version 2.6.18.2-34-default (geeko@buildhost) (gcc version 4.1.2 20061115 (prerelease) (SUSE Linux)) #1 SMP Mon Nov 27 11:46:27 UTC 2006
Run Code Online (Sandbox Code Playgroud)

文件peptides.txt包含:

RKEKNVQ
IPKKLLQK
QYFHQLEKMNVK …
Run Code Online (Sandbox Code Playgroud)

unix linux io bash loops

1242
推荐指数
11
解决办法
145万
查看次数

如何将输出重定向到文件和标准输出

在bash中,调用foo将在stdout上显示该命令的任何输出.

调用foo > output会将该命令的任何输出重定向到指定的文件(在本例中为'output').

有没有办法将输出重定向到文件并将其显示在stdout上?

linux io bash file-io stdout

898
推荐指数
9
解决办法
57万
查看次数

如何使用Java逐行读取大型文本文件?

我需要使用Java逐行读取大约5-6 GB的大文本文件.

我该怎么办?

java io performance file-io garbage-collection

813
推荐指数
15
解决办法
116万
查看次数

如何检查Java中是否存在文件?

在打开文件以便在Java中读取之前,如何检查文件是否存在?(相当于Perl的-e $filename).

关于SO的唯一类似问题涉及编写文件,因此使用FileWriter回答,这显然不适用于此处.

如果可能的话,我更喜欢真正的API调用返回true/false,而不是某些"调用API来打开文件并在它抛出异常时捕获,你在文本中检查'没有文件'",但我可以忍受后者.

java io file-io

802
推荐指数
13
解决办法
111万
查看次数

如何将文本附加到Java中的现有文件中

我需要将文本重复附加到Java中的现有文件中.我怎么做?

java io file-io text-files

660
推荐指数
12
解决办法
94万
查看次数

在使用next()或nextFoo()之后,Scanner正在跳过nextLine()?

我正在使用这些Scanner方法nextInt()nextLine()阅读输入.

它看起来像这样:

System.out.println("Enter numerical value");    
int option;
option = input.nextInt(); // Read numerical value from input
System.out.println("Enter 1st string"); 
String string1 = input.nextLine(); // Read 1st string (this is skipped)
System.out.println("Enter 2nd string");
String string2 = input.nextLine(); // Read 2nd string (this appears right after reading numerical value)
Run Code Online (Sandbox Code Playgroud)

问题是输入数值后,第一个input.nextLine()被跳过而第二个input.nextLine()被执行,所以我的输出如下所示:

Enter numerical value
3   // This is my input
Enter 1st string    // The program is supposed to stop here and …
Run Code Online (Sandbox Code Playgroud)

java io java.util.scanner

627
推荐指数
17
解决办法
45万
查看次数

626
推荐指数
10
解决办法
101万
查看次数

将OutputStream获取为String

将输出从java.io.OutputStream传递到Java中的String的最佳方法是什么?

说我有方法:

  writeToStream(Object o, OutputStream out)
Run Code Online (Sandbox Code Playgroud)

它将对象中的某些数据写入给定流.但是,我希望尽可能轻松地将此输出转换为String.

我正在考虑写一个这样的课程(未经测试):

class StringOutputStream extends OutputStream {

  StringBuilder mBuf;

  public void write(int byte) throws IOException {
    mBuf.append((char) byte);
  }

  public String getString() {
    return mBuf.toString();
  }
}
Run Code Online (Sandbox Code Playgroud)

但有更好的方法吗?我只想进行测试!

java string io stream

555
推荐指数
5
解决办法
59万
查看次数