打开文本文件并找到一个单词并指向该单词

时间:2014-06-19 10:25:17

标签: java text

我需要打开一个日志文件(.txt)并转到该特定字词。

例如: - 如果我在文本文件中搜索" MyTextWord" ,则应该打开默认编辑器并转到" MyTextWord&#34这个词;

如果它在第100行,它应该去那里,所以它显示第100行及以后。

可以为linux和windows做到吗?

3 个答案:

答案 0 :(得分:0)

我想,过了几天我正在开发一个涉及同样事情的简单项目。

您可以使用扫描仪扫描文件中的数据。然后遍历它以获取数据。

我会在这里粘贴代码,我会与你分享帖子链接,这样如果你需要任何进一步的信息,你可以从那里得到它。

您可以将字符串作为参数传递给方法。

String character = sc.next(); // read character...
// Find the character
System.out.println("Searching now...");
getCharacterLocation(character); // here is the parameter as character

文件读取功能如下:

File file = new File("res/File.txt");
Scanner sc = new Scanner(file);
int lineNumber = 0;
int totalLines = 0;
boolean found = false;
// First get the total number of lines
while(sc.hasNextLine()) {
   totalLines++;
   sc.nextLine();
   System.out.println("Line looping! For Total Lines variable.");
}
int[] lineNumbers = new int[totalLines];
int lineIndex = 0;
System.out.println("Searching in each line...");
sc.close();
sc = new Scanner(file);
while(sc.hasNextLine()) {
     // Until the end
     /* Get each of the character, I mean string from
     * each of the line... */
     String characterInLine = sc.nextLine().toLowerCase();
     if(characterInLine.indexOf(character.toLowerCase()) != -1) {
       found = true;
     }
     lineNumber++;
     if(sc.hasNextLine())
       sc.nextLine();
}
System.out.println("Searching complete, showing results...");
// All done! Now post that.
if(found) {
   // Something found! :D
   System.out.print("'" + character + "' was found in the file!");
} else {
// Nope didn't found anything!
System.out.println("Sorry, '" + 
character + "' didn't match any character in file  .");
}
sc.close();

是的,我知道它有点搞乱了代码,因为我喜欢编写注释,而且我喜欢获取有关正在执行的进程以及已执行的信息。

要获取此代码的完整代码,请转到下面的链接。

http://basicsofwebdevelopment.wordpress.com/2014/05/27/scanning-file-for-particular-string-or-character-searching/

答案 1 :(得分:0)

根据哪个编辑器是默认编辑器,是的,它是可行的。例如,如果您使用Sublime Text,则可以使用sublime somefile.txt:X:Y打开文件,其中X是行号,Y是列或字符位置。我相信大多数体面的编辑都有类似的能力,但我不确定是否有任何标准。

所以基本上你必须预先处理有问题的日志以找到行号和字符位置,用一些额外的参数启动编辑器。就default editor而言,这将更加困难,因为它们可能不共享用于指定行/列的相同参数。有些像Windows记事本可能根本不支持这种事情。

答案 2 :(得分:0)

Windows的

Here is a way to open NotePad。我不确定你是否能够在流程中搜索和选择文本...我会检查它。

您还可以查看Desktop javadocs