Java 用数据填充BufferedReader

Java 用数据填充BufferedReader,java,bufferedreader,Java,Bufferedreader,我找到的所有示例都是从文件填充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。我需要用“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
列出节点//这里有数据
BufferedReader bufRead=null;
对于(节点:节点){
//需要用节点数据逐行填充BufferedReader
bufRead=new BufferedReader(新的InputStreamReader(null,node.toString()+“\n”);
}
//稍后使用BufferedReader
您不需要“填充”一个。Reader是一个动词,意思是它读东西,所以你必须提供被读取的来源

如果您有生成文本的Java代码,您稍后会想要读取这些文本,那么请使用例如a将文本写入内存缓冲区。然后,您可以稍后使用例如a来阅读该文本

范例


更新

评论:我想知道是否有一个更“优雅”,更短的解决方案

当然,
PrintWriter
的使用是可选的,对于
Reader
Writer
String
版本,实际上不需要调用
close()

或者,您可以使用


它很好用。我想知道在我把它标记为正确答案之前,是否有一个更“简单”的、更短的解决方案……为什么?你已经有数据了。把它放进一个
bfFerreader
对你有什么好处?这只是浪费时间和空间。
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
    }
}
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 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
}