Java 编辑文件中的特定字符串?

Java 编辑文件中的特定字符串?,java,Java,因此,我正在创建一个程序,当调用该程序时,它将有输入,转到一个文件并更改分配给被调用字符串的编号。例如: 该文件看起来像: stone 0 wood 5 water 2 metal 5 如果调用了“wood”,它将进入文件,找到wood,然后将其添加到wood右侧的值中,这只会将该值更改为6,然后保存文件 我在互联网上四处寻找,但找不到多少适合我的具体问题。它要么将一个int改为一个或另一个,要么将所有int改为某个 公共类主{ 公共静态void main(字符串[]args){ 文件编写器;

因此,我正在创建一个程序,当调用该程序时,它将有输入,转到一个文件并更改分配给被调用字符串的编号。例如:

该文件看起来像:

stone 0 wood 5 water 2 metal 5
如果调用了“wood”,它将进入文件,找到wood,然后将其添加到wood右侧的值中,这只会将该值更改为6,然后保存文件

我在互联网上四处寻找,但找不到多少适合我的具体问题。它要么将一个int改为一个或另一个,要么将所有int改为某个

公共类主{
公共静态void main(字符串[]args){
文件编写器;
缓冲读取器;
stringbufferib;
字符串allBlockAndNull=“石头0木头5水2金属5”;
String strDir=“C:\\Users\\amdro\\Desktop\\test.txt”;
File fileDir=新文件(strDir);
//创建不存在的文件
试一试{
fw=新文件编写器(fileDir);
fw.write(allBlockAndNull);
fw.close();
}捕获(IOE异常){
e、 printStackTrace();
}最后{}
}
}

如果你能从上面扩展,那就太好了

不能将数字添加到文件中的值,因为所有值都是字符串,但可以做的是替换字符串值

public static void main(String[] args) throws IOException {
                File file = new File("file.txt");//The file containing stone 0 wood 5 water 2 metal 5
                BufferedReader reader = new BufferedReader(new FileReader(file));

                String words = "", list = "";

                while ((words = reader.readLine()) != null) {
                    list += words;
                }
                reader.close();
                Scanner s = new Scanner(file);
                if(list.contains("wood")) {
                String replacedtext = list.replaceAll("wood 5", "wood 6");

                FileWriter writer = new FileWriter("file.txt");
                writer.write(replacedtext);
                writer.close();
                }
            }
        }

这是一个非常简单的基本的问题解决方案:它包括读取文件、将所有更改附加到字符串以及用字符串覆盖同一文件

创建一个扫描仪来读取文本文件并初始化一个新的字符串变量

Scanner s = new Scanner(new File("fileName.txt"));
String line = "";
当文本文件中仍有一个字符时,获取
单词
数字

while(sc.hasNext()){
    String word = s.next();
    int number = s.nextInt();
default:
    line += word + " " + number + " ";
然后,在
while
循环中,使用
开关
大小写
检查单词。例如,如果word=“wood”,则在

case "wood":
    line += word + " " + newNumber + " ";
    break;
默认设置是在单词和旧数字后面加上
number

while(sc.hasNext()){
    String word = s.next();
    int number = s.nextInt();
default:
    line += word + " " + number + " ";

最后,只需创建一个
FileWriter
和一个
BufferedWriter
即可将
写入文本文件。

大多数情况下,您无法在线找到专为您的问题量身定制的解决方案。它通常涉及到您自己的一些编码,以根据您的实际需要定制通用的最佳实践方法。您能告诉我们您试图获取输入并实际更改值的内容吗?您能告诉我们您想要的输出吗?您的问题没有任何“现成”的解决方案。您可能应该组合一些“String”方法。例如,您可以找到“wood”的索引,然后您将能够获得分配给该索引的编号。增加该数字并将其放在上一个索引中。这是我想到的第一件事,但如果你想一想并尝试一下,你可能会找到更好的解决方案。你可以读取整个文件,更改字符串并将其写回…似乎你真正的问题不是如何读取和写入文件(你的代码片段表明你能够做到这一点)但是如何找到正确的值来替换。一种解决方案是在空白处分割输入,构建一个
LinkedHashMap
,以保持元素的顺序(将数字解析为
Integer
),找到正确的条目并增加其值,最后将条目写回文件(或先写回字符串)。