我需要打开一个日志文件(.txt)并转到该特定字词。
例如: - 如果我在文本文件中搜索" MyTextWord" ,则应该打开默认编辑器并转到" MyTextWord&#34这个词;
如果它在第100行,它应该去那里,所以它显示第100行及以后。
可以为linux和windows做到吗?
答案 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();
是的,我知道它有点搞乱了代码,因为我喜欢编写注释,而且我喜欢获取有关正在执行的进程以及已执行的信息。
要获取此代码的完整代码,请转到下面的链接。
答案 1 :(得分:0)
根据哪个编辑器是默认编辑器,是的,它是可行的。例如,如果您使用Sublime Text,则可以使用sublime somefile.txt:X:Y
打开文件,其中X
是行号,Y
是列或字符位置。我相信大多数体面的编辑都有类似的能力,但我不确定是否有任何标准。
所以基本上你必须预先处理有问题的日志以找到行号和字符位置,用一些额外的参数启动编辑器。就default editor
而言,这将更加困难,因为它们可能不共享用于指定行/列的相同参数。有些像Windows记事本可能根本不支持这种事情。
答案 2 :(得分:0)
Here is a way to open NotePad。我不确定你是否能够在流程中搜索和选择文本...我会检查它。
您还可以查看Desktop javadocs。