在Java中,如何从循环写入同一行
我编写了以下代码,以在文本文件中写入一行,通过使用循环递增内容。问题是,我使用的方法是将每个增量写入新行,而不是追加在Java中,如何从循环写入同一行,java,Java,我编写了以下代码,以在文本文件中写入一行,通过使用循环递增内容。问题是,我使用的方法是将每个增量写入新行,而不是追加 for (int d = 10; d >= 1; d--) { Path path = Paths.get("ScalModel.txt"); List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8); int position = 75;
for (int d = 10; d >= 1; d--) {
Path path = Paths.get("ScalModel.txt");
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
int position = 75;
String extraLine = "MainAttack -OR-> {AttackNode" + d + "}";
lines.add(position, extraLine);
Files.write(path, lines, StandardCharsets.UTF_8);
}
我得到的是:
MainAttack -OR-> {AttackNode1}
MainAttack -OR-> {AttackNode2}
MainAttack -OR-> {AttackNode3}
MainAttack -OR-> {AttackNode4}
MainAttack -OR-> {AttackNode5}
MainAttack -OR-> {AttackNode6}
MainAttack -OR-> {AttackNode7}
MainAttack -OR-> {AttackNode8}
MainAttack -OR-> {AttackNode9}
MainAttack -OR-> {AttackNode10}
如何修改代码以获得预期结果?尝试使用字符串构建来构建字符串,然后一次性保存
StringBuilder sb = new StringBuilder();
sb.append("MainAttack -OR-> {");
int position = 75;
for (int d = 1; d <= 10; d++) {
if(d!=10)
sb.append("AttackNode" + d + ", ");
else
sb.append("AttackNode" + d + " ");
}
sb.append("}");
Path path = Paths.get("ScalModel.txt");
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
lines.add(position, sb);
Files.write(path, lines, StandardCharsets.UTF_8);
StringBuilder sb=新建StringBuilder();
某人附加(“主攻-或->{”);
int位置=75;
对于(int d=1;d,以下是一个简单的例子:
public static void main(String[] args) throws IOException {
Path path = Paths.get("ScalModel.txt");
try {
String initialText = "MainAttack -OR->";
for (int d = 1; d <= 10; d++) {
initialText += " {AttackNode" + d + "}";
}
byte[] bytes = initialText.getBytes();
Files.write(path, bytes);
} catch (IOException ioE) {
System.err.println("JVM reported an error! Take a look: " + ioE);
}
}
publicstaticvoidmain(字符串[]args)引发IOException{
Path Path=Path.get(“ScalModel.txt”);
试一试{
字符串initialText=“maintack-或->”;
对于(int d=1;d,在循环内部有很多指令,必须放在循环外部
Path path = Paths.get("ScalModel.txt");
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
int position = 75;
String extraLine = "MainAttack -OR-> {";
for (int d = 10; d >= 1; d--) {
extraLine += "AttackNode"+d;
if(d==1) extraLine += "}";
else extraLine += ",";
}
lines.add(position, extraLine);
Files.write(path, lines, StandardCharsets.UTF_8);
Path Path=Path.get(“ScalModel.txt”);
列表行=Files.readAllLines(路径,StandardCharsets.UTF_8);
int位置=75;
字符串extraLine=“maintack-OR->{”;
对于(int d=10;d>=1;d--){
外线+=“攻击节点”+d;
如果(d==1)外线+=“}”;
else外线+=“,”;
}
行。添加(位置、外线);
写入(路径、行、标准字符集.UTF_8);
如果您按照自己的方式进行操作,那么在得到答案之前,您正在读写文件10次。除了构建它之外,您忘了在任何地方使用StringBuilder
sb
。在文件中,将字符集指定为UTF\u 8
是过时的。readAllLines
。文件
类将始终使用根据规范,seUTF_8
作为默认值(与旧的文件
类相反)。
Path path = Paths.get("ScalModel.txt");
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
int position = 75;
String extraLine = "MainAttack -OR-> {";
for (int d = 10; d >= 1; d--) {
extraLine += "AttackNode"+d;
if(d==1) extraLine += "}";
else extraLine += ",";
}
lines.add(position, extraLine);
Files.write(path, lines, StandardCharsets.UTF_8);