我没有很多使用文件的经验。我有一个文件。我已将以下内容写入文件
Test 112
help 456
news 456
Friendly 554
fileOUT.write(“Test 112 \ r \ n”); //这是我输入数据的示例。
现在,我正在尝试在文件中搜索单词news,并显示该行中包含单词news
的所有内容。
这就是我的尝试。
if(fileIN.next().contains("news")){
System.out.println("kkk");
}
这不起作用。下面确实发现了一个单词新闻,因为它显示KKK,但我没有一个想法如何只显示它被发现的新行。
while(fileIN.hasNext()){
if(fileIN.next().contains("Play")){
System.out.println("kkk");
}
}
必须显示的是news 456
。
谢谢
答案 0 :(得分:2)
您想致电fileIN.nextLine().contains("news")
如果您还没有,请尝试使用Scanner课程。它通过一些描述符(在这种情况下是新行字符)从流中拆分输入做得很棒。
这是一个简单的代码示例:
String pathToFile = "data.txt";
String textToSearchFor = "news";
Scanner scanner = new Scanner(pathToFile);
while(scanner.hasNextLine()){
String line = scanner.nextLine();
if(line.contains(textToSearchFor)){
System.out.println(line);
}
}
scanner.close();
这是一个高级代码示例,其功能远远超出您的要求。享受!
//Search file for an array of strings. Ignores case if caseSensitive is false.
public void searchFile(String file, boolean caseSensitive, String...textToSearchFor){
Scanner scanner = new Scanner(file);
while(scanner.hasNextLine()){
String originalLine = scanner.nextLine();
String line = originalLine;
if(!caseSensitive) line = line.toLowerCase();
for(String searchText : textToSearchFor){
if(!caseSensitive) searchText = searchText.toLowerCase();
if(line.contains(searchText)){
System.out.println(originalLine);
break;
}
}
}
scanner.close();
}
//usage
searchFile("data.txt",true,"news","Test","bob");
searchFile("data.txt",true,new String[]{"test","News"});
答案 1 :(得分:0)
你可以尝试这段代码......:D
String s = null;
File file = new File(path);
BufferedReader in;
try {
in = new BufferedReader(new FileReader(file));
while (in.ready()) {
s = in.readLine();
if(s.contains("news")){
//print something
}
}
in.close();
} catch (Exception e) {
}