读取文件并提供多个参数进行搜索

时间:2012-05-30 14:30:43

标签: java search arguments

我正在尝试了解为我正在尝试的项目搜索某些关键字。我正在使用由其他人创建的程序,我试图修改它以接受两个参数。到目前为止,我试图在“搜索”+ args [0]之后添加args [1],希望它会搜索第二个参数但是这没有用,并导致程序报告该位置被发现 - 我正在阅读的文本文件显示为:

one
two
three

任何人都可以提供有关如何传递两个参数的帮助。

谢谢

// Import io so we can use file objects
import java.io.*;

public class searchfile {
public static void main(String args[]) {
    try {
        // Open the file c:\test.txt as a buffered reader
        BufferedReader bf = new BufferedReader(new FileReader("C:/Users/Sean/Desktop/Java/MyText.txt"));

        // Start a line count and declare a string to hold our current line.
        int linecount = 0;
            String line;

        // Let the user know what we are searching for
        System.out.println("Searching for " + args[0] + " in file...");

        // Loop through each line, stashing the line into our line variable.
        while (( line = bf.readLine()) != null)
        {
                // Increment the count and find the index of the word
                linecount++;
                int indexfound = line.indexOf(args[0]);

                // If greater than -1, means we found the word
                if (indexfound > -1) {
                     System.out.println("Word was found at position " + indexfound +" on line " + linecount);
                }
        }

        // Close the file after done searching
        bf.close();
    }
    catch (IOException e) {
        System.out.println("IO Error Occurred: " + e.toString());
    }
}

}

1 个答案:

答案 0 :(得分:1)

// Import io so we can use file objects
import java.io.*;

public class searchfile {
public static void main(String args[]) {
    try {
        // Open the file c:\test.txt as a buffered reader
        BufferedReader bf = new BufferedReader(new FileReader("C:/Users/Sean/Desktop/Java/MyText.txt"));

        // Start a line count and declare a string to hold our current line.
        int linecount = 0;
            String line;

        // Let the user know what we are searching for
        // i.e. just printing to the console, not actually searching.
        System.out.println("Searching for " + args[0] + " in file...");

        // Loop through each line, stashing the line into our line variable.
        while (( line = bf.readLine()) != null)
        {
                // Count lines. We read a line this variable (linecount) increments by one
                linecount++; 
                // the indexOf function returns the index (i.e. the place of) the parameter, in this case args[0]. If it doesn't find the parameter, it returns -1, an impossible value, so we know it wasn't found.
                // Here is the actual searching done, till...
                int indexfound = line.indexOf(args[0]);

                // If greater than -1, means we found the word
                if (indexfound > -1) {
                     System.out.println("Word was found at position " + indexfound +" on line " + linecount);
                }
                // ...here.
        }

        // Close the file after done searching
        bf.close();
    }
    catch (IOException e) {
        System.out.println("IO Error Occurred: " + e.toString());
    }
}

}

我在评论中说,搜索完成了。我认为你可以复制大部分内容并为args [1]再次执行此操作。

有关更多参数(不确定它是否是最佳/最快的解决方案):

// Import io so we can use file objects
import java.io.*;

public class searchfile {
public static void main(String args[]) {
    try {
        // Open the file c:\test.txt as a buffered reader
        BufferedReader bf = new BufferedReader(new FileReader("C:/Users/Sean/Desktop/Java/MyText.txt"));

        // Start a line count and declare a string to hold our current line.
        int linecount = 0;
            String line;

        // Let the user know what we are searching for
        // i.e. just printing to the console, not actually searching.
        System.out.println("Searching for " + args[0] + " in file...");

        // Loop through each line, stashing the line into our line variable.
        while (( line = bf.readLine()) != null)
        {
                // Count lines. We read a line this variable (linecount) increments by one
                linecount++; 
                // the indexOf function returns the index (i.e. the place of) the parameter, in this case args[0]. If it doesn't find the parameter, it returns -1, an impossible value, so we know it wasn't found.
                // Here is the actual searching done, till...
                for(int index = 0; true; index++) {
                try {
                int indexfound = line.indexOf(args[index]);

                // If greater than -1, means we found the word
                if (indexfound > -1) {
                     System.out.println("Word was found at position " + indexfound +" on line " + linecount);
                }
                }
                catch(ArrayIndexOutOfBoundsException ex) {
                    break;
                }
                // ...here.
                }
        }

        // Close the file after done searching
        bf.close();
    }
    catch (IOException e) {
        System.out.println("IO Error Occurred: " + e.toString());
    }
}

}

我不确定这是否有效,可能不是,但我只是从头脑中写出来(未经测试)。