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