Java遍历一个文件,将每一行追加为一个大字符串

Java遍历一个文件,将每一行追加为一个大字符串,java,Java,我希望能够将每一行添加到字符串中。 类似此格式字符串=“依赖”第1行第2行第3行第4行第5行/依赖“” 因此,在Essence中,我想在每一行上创建一个从“depends”到“/depends”的字符串,将它们从头到尾包含在一个字符串中。我该怎么做呢 while(nextLine != "</depends>"){ completeString = line + currentline; } <depends> line1 line2 line3 line4

我希望能够将每一行添加到字符串中。 类似此格式字符串=“依赖”第1行第2行第3行第4行第5行/依赖“”

因此,在Essence中,我想在每一行上创建一个从“depends”到“/depends”的字符串,将它们从头到尾包含在一个字符串中。我该怎么做呢

 while(nextLine != "</depends>"){
    completeString = line + currentline;
}


<depends>
line1
line2
line3
line4
line5
line6
</depends
while(下一行!=“”){
completeString=线路+当前线路;
}
第1行
第2行
第3行
第4行
第5行
第6行
final BufferedReader br=new BufferedReader(新文件阅读器(“文件路径”));
最终StringBuilder sb=新StringBuilder();
String nextLine=br.readLine();//先跳过
while(nextLine!=null&&!nextLine.equals(“”)//不是文件的结尾,也不是结束标记
{
某人附加(下一行);
nextLine=br.readLine();
}
最终字符串completeString=sb.toString();
final BufferedReader br=new BufferedReader(新文件阅读器(“文件路径”));
最终StringBuilder sb=新StringBuilder();
String nextLine=br.readLine();//先跳过
while(nextLine!=null&&!nextLine.equals(“”)//不是文件的结尾,也不是结束标记
{
某人附加(下一行);
nextLine=br.readLine();
}
最终字符串completeString=sb.toString();

在java
中!=
不适用于字符串,因此您必须使用
而(!nextLine.equals(“”
)。此外,与在java is中使用
字符串
字符串
相比,最好使用
字符串生成器
并在其上附加新行。因此,在您的情况下,强烈建议使用
字符串生成器


这是对任何输入文件的一般回答,但如果您的输入文件是
xml
,则有许多很好的java库可供使用。

在java
中!=
不适用于字符串,因此您必须在(!nextLine.equals(“”)时使用
。此外,在java is中使用
StringBuilder
并向其添加新行比使用
String
更好,因此,强烈建议在您的情况下使用
StringBuilder


这是对任何输入文件的一般回答,但如果您的输入文件是
xml
,则有许多很好的java库可供使用。

如果您可以使用java 8

Files
    .lines(pathToFile)
    .filter(s -> !s.equals("<depends>") && !s.equals("</depends>"))
    .reduce("", (a, b) -> a + b));
文件
.行(路径文件)
.filter(s->!s.equals(“”)&!s.equals(“”)
.reduce(“,(a,b)->a+b));

非常好的版本;)

如果您可以使用java 8

Files
    .lines(pathToFile)
    .filter(s -> !s.equals("<depends>") && !s.equals("</depends>"))
    .reduce("", (a, b) -> a + b));
文件
.行(路径文件)
.filter(s->!s.equals(“”)&!s.equals(“”)
.reduce(“,(a,b)->a+b));

相当不错的版本;)

而(!“”.equals(nextLine)){
Sidenote:使用StringBuilder而不是普通的字符串连接。这会更快,而且不会浪费内存和未使用的字符串。如果使用xml,可以使用dom解析器。Ex。Dom4j@stuXnet需要注意的是,字符串连接在幕后使用字符串生成器。@DaveNewton是和否,iirc。实际上,
line+currentline
将变成
new StringBuilder().append(line).append(currentline).toString()
或类似的东西,但Java不会对所有迭代使用相同的
StringBuilder
,而是每次都创建一个新的。因此,如果使用循环,应该使用
StringBuilder
while(!“”.equals(nextLine)){
Sidenote:使用StringBuilder而不是普通的字符串连接。这会更快,而且不会浪费内存和未使用的字符串。如果使用xml,可以使用dom解析器。Ex。Dom4j@stuXnet需要注意的是,字符串连接在幕后使用字符串生成器。@DaveNewton是和否,iirc。实际上,
line+currentline
将成为
新的StringBuilder().append(line).append(currentline).toString()
或类似的东西,但是Java不会在所有迭代中使用相同的
StringBuilder
,而是每次都创建一个新的。因此,如果使用循环,应该使用
StringBuilder
。+1考虑
nextLine的
null
值+1考虑
null
val下一行的用户