用数据填充 BufferedReader
fill BufferedReader with data
我找到的所有示例都是从文件中填充 BufferedReader。我需要用 "for" 循环中的数据填充它,如下所示:
List<Nodes> nodes; //there are data here
BufferedReader bufRead = null;
for (Node node : nodes) {
//need to fill the BufferedReader with node data line by line
bufRead = new BufferedReader(new InputStreamReader(null, node.toString()+"\n"));
}
//use the BufferedReader later on
您不会“填写”Reader
。 Reader是一个动词,表示它读某物,所以你必须提供正在读的来源。
如果您有 Java 生成文本的代码,您稍后想阅读,然后使用例如StringWriter
to write the text into a memory buffer. You can then later read that text using e.g. a StringReader
.
例子
String text;
try (StringWriter strOut = new StringWriter()) {
try (PrintWriter out = new PrintWriter(strOut)) {
for (Node node : nodes) {
out.println(node);
}
}
text = strOut.toString();
}
try (BufferedReader in = new BufferedReader(new StringReader(text))) {
for (String line; (line = in.readLine()) != null; ) {
// use line here
}
}
更新
From comment: I was wondering if there is a more "elegant", shorter solution
使用PrintWriter
当然是可选的,而且有了String
版本的Reader
和Writer
,就真的没必要调用[=20了=].
StringWriter out = new StringWriter();
for (Node node : nodes) {
out.write(node + "\n");
}
BufferedReader in = new BufferedReader(new StringReader(out.toString()));
for (String line; (line = in.readLine()) != null; ) {
// use line here
}
或者,您可以使用 StringBuilder
。
StringBuilder buf = new StringBuilder();
for (Node node : nodes) {
buf.append(node).append('\n');
}
BufferedReader in = new BufferedReader(new StringReader(buf.toString()));
for (String line; (line = in.readLine()) != null; ) {
// use line here
}
我找到的所有示例都是从文件中填充 BufferedReader。我需要用 "for" 循环中的数据填充它,如下所示:
List<Nodes> nodes; //there are data here
BufferedReader bufRead = null;
for (Node node : nodes) {
//need to fill the BufferedReader with node data line by line
bufRead = new BufferedReader(new InputStreamReader(null, node.toString()+"\n"));
}
//use the BufferedReader later on
您不会“填写”Reader
。 Reader是一个动词,表示它读某物,所以你必须提供正在读的来源。
如果您有 Java 生成文本的代码,您稍后想阅读,然后使用例如StringWriter
to write the text into a memory buffer. You can then later read that text using e.g. a StringReader
.
例子
String text;
try (StringWriter strOut = new StringWriter()) {
try (PrintWriter out = new PrintWriter(strOut)) {
for (Node node : nodes) {
out.println(node);
}
}
text = strOut.toString();
}
try (BufferedReader in = new BufferedReader(new StringReader(text))) {
for (String line; (line = in.readLine()) != null; ) {
// use line here
}
}
更新
From comment: I was wondering if there is a more "elegant", shorter solution
使用PrintWriter
当然是可选的,而且有了String
版本的Reader
和Writer
,就真的没必要调用[=20了=].
StringWriter out = new StringWriter();
for (Node node : nodes) {
out.write(node + "\n");
}
BufferedReader in = new BufferedReader(new StringReader(out.toString()));
for (String line; (line = in.readLine()) != null; ) {
// use line here
}
或者,您可以使用 StringBuilder
。
StringBuilder buf = new StringBuilder();
for (Node node : nodes) {
buf.append(node).append('\n');
}
BufferedReader in = new BufferedReader(new StringReader(buf.toString()));
for (String line; (line = in.readLine()) != null; ) {
// use line here
}