在文本文件中查找字符串的方法,如果没有找到字符串,则将字符串添加到文本文件中,否则拒绝输入

时间:2012-10-24 06:57:39

标签: java text methods

public static void main(String[] args) throws IOException{
if (args.length == 1)
{
    BufferedReader bf = new BufferedReader (new FileReader("fruit.txt"));
    int linecount = 0;
    String line;
    //run thur the txt file to check if input exist
    while (( line = bf.readLine()) != null)
    {
        linecount++;
        int indexfound = line.indexOf(args[0]);
        if (indexfound > -1) {
            System.out.println("fruit exist on line " + linecount);
            System.out.println("add another fruit");    
            System.exit(0);
        } else {
            BufferedWriter bw = new BufferedWriter(new FileWriter("fruit.txt", true));
            String fruit = "";
            fruit = args[0];
            bw.write("\r\n" + fruit);
            System.out.println(fruit+ "added"); 
        }
    }
    f.close();
    bw.close();
}

我想让程序在文本文件fruit.txt中搜索 检查水果是否已经存在。

如果存在水果,则提示用户输入另一个

否则 添加到文本文件的下一行

这是我到目前为止所得到的。 但我不确定为什么它不是我想要的。

在我的文本文件中以3个水果开始

apple
orange
pear

我加入浆果后

apple
orange
pear
berry
berry

加入甜瓜后

apple
orange
pear
berry
berry
melon
melon
melon
melon

1 个答案:

答案 0 :(得分:2)

您只是检查第一行中的水果,如果没有找到,您将继续添加它。

您需要首先完整地读取您的文件,一个用于检查每一行,它是否包含您的水果,然后如果它不包含,则只需将该水果转储到其中。如果它包含,请拒绝它。

所以,在你的同时,你需要将其他部分移到外面。而不是在找到水果时执行System.exit(),您可以将布尔变量设置为true,然后根据布尔变量的值,您可以决定是否添加水果。

boolean found = false;
while (( line = bf.readLine()) != null) {

    linecount++;
    int indexfound = line.indexOf(args[0]);
    if (indexfound > -1) {
        System.out.println("fruit exist on line " + linecount);
        System.out.println("add another fruit");   
        found = true;
        break;
    }
}

if (!found) {

    BufferedWriter bw = new BufferedWriter(new FileWriter("fruit.txt", true));
    String fruit = "";
    fruit = args[0];

    bw.write("\r\n" + fruit);
    System.out.println(fruit+ "added"); 

    bw.close();  // You need to close it here only. 
}

bf.close();