我想要替换某些内容,而不是将文件的整个内容与我的内容一起写入其中。
我在java中编写了以下代码:
String update = "Pooja" + "," + "20" + "\n";
try{
File file = new File("Test.txt");
FileReader fileReader = new FileReader(file);
BufferedReader br = new BufferedReader(fileReader);
String rline,rline1;
while((rline = br.readLine())!=null){
System.out.println(rline);
if(rline.contains("Pooja") == true){
rline1 = rline;
rline = rline.replace(rline1,update);
System.out.println(rline);
break;
// System.out.println(score);
}
}
br.close();
FileOutputStream bw = new FileOutputStream(file);
bw.write(rline.getBytes());
bw.close();
}
catch(IOException e){
e.printStackTrace();
}
我的档案是这样的:
Pooja,10
Priya,20
Riya,30
我想将文件更新为:
Pooja,20
Priya,20
Riya,30
但是当我运行代码时,它只用以下内容刷新所有内容:
Pooja,20
我尝试了很多stackoverflow链接,但没有任何帮助。请帮忙。我是新来的。
答案 0 :(得分:0)
改为使用.properties文件,类属性。
很好的教程代码here。
文件会有所不同。
Pooja=20
Priya=20
Riya=30
和
Properties userProps = new Properties();
Path userFile = Paths.get(System.getProperty("user.home") + "/userdata.properties");
void loadUserProps() {
try (BufferedReader in = Files.newBufferedReader(userFile,
StandardCharsets.UTF_8)) {
userProps .load(in);
}
}
void saveUserProps() {
try (BufferedWriter out = Files.newBufferedWriter(userFile,
StandardCharsets.UTF_8)) {
userProps .store(out, "-- " + new Date());
}
}
loadUserProps();
String old = userProps.getProperty("Pooja", "0");
int n = Integer.parseInt(old) + 10;
userProps.setProperty("Pooja", Integer.toString(n));
saveUserProps();
使用现有的键值容器,这看起来不那么人为。
我使用UTF-8,因此可以使用完整的Unicode范围。
答案 1 :(得分:0)
除了其他人已经指出的内容之外,您可以通过在文本编辑器中使用find / replace或使用sed(http://en.wikipedia.org/wiki/Sed)来实现此目的
显然,我缺乏编写此程序的上下文,但如果问题只是文本替换,请保持对可用工具的开放态度。
答案 2 :(得分:0)
这样的事情可行:
File file = new File("Test.txt");
try (BufferedReader br = new BufferedReader(new FileReader(file));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)))) {
String line;
while ((line = br.readLine()) != null) {
if (line.contains("Pooja")) {
line = "Pooja,20";
}
bw.write(line);
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}