搜索文本文件 java
Searching through a text file java
所以我试图搜索一个文本文件,如果找到用户输入,它 returns 整个句子包括白色 spaces.But 显然我只得到第一个字符串,没有通过句子中的第一个字符串。例如,如果我有一个名为 "data.txt" 的文本文件,第一行的内容是“我是传奇”。用户输入 "I am a legend" 后,搜索文件后的输出为 "I"。任何帮助将不胜感激。
public static void Findstr() { // This function searches the text for the string
File file = new File("data.txt");
Scanner kb = new Scanner(System.in);
System.out.println(" enter the content you looking for");
String name = kb.next();
Scanner scanner;
try {
scanner = new Scanner(file).useDelimiter( ",");
while (scanner.hasNext()) {
final String lineFromFile = scanner.nextLine();
if (lineFromFile.contains(name)) {
// a match!
System.out.println("I found " + name);
break;
}
}
} catch (IOException e) {
System.out.println(" cannot write to file " + file.toString());
}
Scanner.next();
returns 下一个字符改为使用 Scanner.readLine();
编辑:
相信扫描仪使用 .nextLine();
而不是 .readLine();
当您扫描输入时..
Scanner kb = new Scanner(System.in);
System.out.println(" enter the content you looking for");
String name = kb.next();
您只接受一个令牌。您应该使用 kb.nextLine()
接受要搜索的整行作为您的标记
package com.example;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class FileSearch {
public void parseFile(String fileName,String searchStr) throws FileNotFoundException{
Scanner scan = new Scanner(new File(fileName));
while(scan.hasNext()){
String line = scan.nextLine().toLowerCase().toString();
if(line.contains(searchStr)){
System.out.println(line);
}
}
}
public static void main(String[] args) throws FileNotFoundException{
FileSearch fileSearch = new FileSearch();
fileSearch.parseFile("src/main/resources/test.txt", "am");
}
}
test.txt contains:
I am a legend
Hello World
I am Ironman
Output:
i am a legend
i am ironman
以上代码不区分大小写搜索。您应该使用 nextLine() 来获取完整的行。 next() 在空格处中断。
参考:
http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#next()
所以我试图搜索一个文本文件,如果找到用户输入,它 returns 整个句子包括白色 spaces.But 显然我只得到第一个字符串,没有通过句子中的第一个字符串。例如,如果我有一个名为 "data.txt" 的文本文件,第一行的内容是“我是传奇”。用户输入 "I am a legend" 后,搜索文件后的输出为 "I"。任何帮助将不胜感激。
public static void Findstr() { // This function searches the text for the string
File file = new File("data.txt");
Scanner kb = new Scanner(System.in);
System.out.println(" enter the content you looking for");
String name = kb.next();
Scanner scanner;
try {
scanner = new Scanner(file).useDelimiter( ",");
while (scanner.hasNext()) {
final String lineFromFile = scanner.nextLine();
if (lineFromFile.contains(name)) {
// a match!
System.out.println("I found " + name);
break;
}
}
} catch (IOException e) {
System.out.println(" cannot write to file " + file.toString());
}
Scanner.next();
returns 下一个字符改为使用 Scanner.readLine();
编辑:
相信扫描仪使用 .nextLine();
而不是 .readLine();
当您扫描输入时..
Scanner kb = new Scanner(System.in);
System.out.println(" enter the content you looking for");
String name = kb.next();
您只接受一个令牌。您应该使用 kb.nextLine()
package com.example;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class FileSearch {
public void parseFile(String fileName,String searchStr) throws FileNotFoundException{
Scanner scan = new Scanner(new File(fileName));
while(scan.hasNext()){
String line = scan.nextLine().toLowerCase().toString();
if(line.contains(searchStr)){
System.out.println(line);
}
}
}
public static void main(String[] args) throws FileNotFoundException{
FileSearch fileSearch = new FileSearch();
fileSearch.parseFile("src/main/resources/test.txt", "am");
}
}
test.txt contains:
I am a legend
Hello World
I am Ironman
Output:
i am a legend
i am ironman
以上代码不区分大小写搜索。您应该使用 nextLine() 来获取完整的行。 next() 在空格处中断。
参考: http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#next()