正在编辑文件中的特定字符串吗?

问题描述 投票:-1回答:2

因此,我正在创建一个程序,该程序在被调用时将具有输入,进入文件并更改分配给所调用字符串的数字。例如:

文件看起来像:

stone 0 wood 5 water 2 metal 5

并且如果调用了“ wood”,它将进入文件,找到wood,然后向wood右边的值发送加一,这只会将该值更改为6,然后保存文件。

我已经在互联网上四处张望,但找不到真正适合我的特定问题的东西。它可以将一个int更改为一个或另一个,或将所有int更改为某个内容。

public class Main { 
    public static void main(String[] args) {

        FileWriter fw;
        BufferedReader reader;
        StringBuffer ib;

        String allBlockAndNull = "stone 0 wood 5 water 2 metal 5";

        String strDir = "C:\\Users\\amdro\\Desktop\\test.txt";
        File fileDir = new File(strDir);

        //creates file it doesn't exist
        try {
            fw = new FileWriter(fileDir);
            fw.write(allBlockAndNull);

            fw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {}

    }
}

如果您可以从上面进行扩展,那就太好了!

java
2个回答
0
投票

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

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();
                }
            }
        }

0
投票

这是解决问题的非常简单和基本的方法。

创建扫描仪以读取您的文本文件和字符串变量

Scanner s = new Scanner(new File("fileName.txt"));
String line = "";

虽然文本文件中仍然有字符,但要得到单词和数字

while(sc.hasNext()){
    String word = s.next();
    int number = s.nextInt();

使用switchcase检查单词。例如,如果单词=“ wood”,则将“ wood”和新数字追加到newNumberline

case "wood":
    line += word + " " + newNumber + " ";
    break;

默认将在单词和旧数字后附加number

default:
    line += word + " " + number + " ";

然后,只需创建一个FileWriter和一个BufferedWriter以将line写入文本文件。

© www.soinside.com 2019 - 2024. All rights reserved.