我坚持用File,BufferedReader和&amp ;;写一个特定的行。的BufferedWriter。
我想要实现的是获取我的文本文件总行数(-3)&写到那条线。
目前它只删除整个文件&什么都写不出来。
我正在做的事情的图像:
(图中)第25行是空白& 26不包含文档。它包含"}"
&安培;我的代码:
package com.tests.writer;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JFrame;
public class NewWriter {
static Integer tableCount;
static File file;
static FileWriter fw;
static FileReader fr;
static BufferedWriter bw;
static BufferedReader br;
public static void main(String[] args) {
JFrame frame = new JFrame("Test {New Writer}");
frame.setBounds(500, 500, 500, 500);
frame.setVisible(true);
frame.setResizable(false);
frame.setAutoRequestFocus(true);
try {
startApplication();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void startApplication () throws IOException {
writeToFile ();
}
private static void writeToFile () throws IOException {
Integer lineTCount = 0;
file = new File("Tables.txt");
if (file.exists()) {
fw = new FileWriter(file.getAbsolutePath(), true);
fr = new FileReader(file.getAbsolutePath());
bw = new BufferedWriter(fw);
br = new BufferedReader(fr);
for (String line = br.readLine(); line != null; line = br.readLine()) {
lineTCount++;
System.out.println(lineTCount);
}
System.out.println(lineTCount);
bw.write("Test Text to insert");
System.out.println("done");
System.exit(0);
} else {
file.createNewFile();
System.out.println("New File = " + file.toString());
writeToFile();
}
}
}
如果有一种更简单的方法,我可以接受所有想法,因为我还不熟悉Java.io
&安培;如果有人能告诉我这是正确的。我可能需要将整个文件添加到列表中,添加新文本然后重新写入文件。
答案 0 :(得分:1)
循环浏览文件时,bw指针不会移动。使用此选项可写入文件中的特定位置。另外为什么有两个变量lineCount& lineTCount
public void write(String s,
int off,
int len)
throws IOException
编辑:你是对的,我的坏。您必须阅读以前的内容 - >进行所需的更改并再次重写整个文件。
答案 1 :(得分:1)
有一些事情你做了一点点。 首先是最重要的;您的文件返回空的原因是因为您没有调用
bw.close();
写完文件后。
我不知道如何写入文件的特定部分。我不认为有一个。
您需要做的是重写文件。基本上,制作一个临时副本,然后像以前一样写出所有行,除了倒数第三行。
看到这个问题: I want to open a text file and edit a specific line in java
(我不知道如何将问题标记为重复)
BufferedWriter'写(String s,int off,int len)'方法实际上陈述
Writes a portion of a String.
请注意;这不是写在文件中的特定位置'。
修改强>
我不会使用System.exit(0);
。这告诉你的操作系统'此执行失败'。你应该通过排除这一行让你的程序正常关闭。
请参阅:When to use system.exit(0)?