我想用java程序读取同一文件夹中的文本文件。我有一个readFile(),用于逐行读取文件的内容。然后setName()将替换内容的一部分。我编译程序并运行没有错误。但文件的内容根本没有变化。
谢谢
public StringBuffer readFile(){ //read file line by line
URL url = getClass().getResource("test.txt");
File f = new File(url.getPath());
StringBuffer sb = new StringBuffer();
String textinLine;
try {
FileInputStream fs = new FileInputStream(f);
InputStreamReader in = new InputStreamReader(fs);
BufferedReader br = new BufferedReader(in);
while (true){
textinLine = br.readLine();
if (textinLine == null) break;
sb.append(textinLine);
}
fs.close();
in.close();
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return sb;
}
public void setName(String newName){
StringBuffer sb = readFile();
int pos = sb.indexOf("UserName=");
sb.replace(pos, pos+newName.length(), newName);
}
答案 0 :(得分:1)
你必须回写文件以便它被改变,但你不改变StringBuffer的内容,你只是在阅读它。 一旦您更改了内容,您需要将新内容写入文件,如:
try{
FileWriter fwriter = new FileWriter(YourFile);
BufferedWriter bwriter = new BufferedWriter(fwriter);
bwriter.write(sb.toString());
bwriter.close();
}
catch (Exception e){
e.printStackTrace();
}
答案 1 :(得分:0)
您不会更改文件的内容,而是更改StringBuffer的内容。如果您在System.out.println(sb.ToString())
方法之前和之后查看了StringBuffer(sb.replace
),您会看到 的更改