如果你有一个java.io.InputStream对象,你应该如何处理该对象并产生一个String?
假设我有一个InputStream包含文本数据,并且我想将其转换为a String,所以例如我可以将其写入日志文件.
采取InputStream并将其转换为最简单的方法是String什么?
public String convertStreamToString(InputStream is) {
// ???
}
Run Code Online (Sandbox Code Playgroud) 我一直在使用下面的成语一段时间了.它似乎是最广泛的,至少在我访问过的网站上.
是否有更好/不同的方式将文件读入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) 如何使用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) 在bash中,调用foo将在stdout上显示该命令的任何输出.
调用foo > output会将该命令的任何输出重定向到指定的文件(在本例中为'output').
有没有办法将输出重定向到文件并将其显示在stdout上?
我需要使用Java逐行读取大约5-6 GB的大文本文件.
我该怎么办?
我正在使用这些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.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)
但有更好的方法吗?我只想进行测试!
io ×10
java ×8
file-io ×5
string ×3
bash ×2
file ×2
linux ×2
stream ×2
directory ×1
inputstream ×1
loops ×1
performance ×1
stdout ×1
text-files ×1
unix ×1