从知道线索引的文件中读取单词的最佳方法是什么? 我想读取文件中的每个单词并检查是否只包含数字。如果我不打印单词索引和行索引。
我目前正在使用此功能,但我想知道是否有办法在没有2个循环的情况下进行此操作。
private static void validateNumber ( String fileName )
{
try ( BufferedReader reader = new BufferedReader ( new FileReader ( fileName ) ) )
{
String line = null;
int lineIndex = -1;
while ( ( line = reader.readLine ( ) ) != null )
{
lineIndex++;
String [ ] words = line.trim ( ).split ( "[\\s]+" );
for ( int i = 0; i < words.length; i++ )
{
System.out.println("Word " + i " at line " + lineIndex);
}
}
} catch ( FileNotFoundException e )
{
e.printStackTrace ( );
} catch ( IOException e )
{
e.printStackTrace ( );
}
}
答案 0 :(得分:1)
如果您不想使用2个循环,您可以阅读整个文本,然后分成&#34; \ n&#34;字符:String[] lines = text.split("\n");
现在你有一个每行的数组,你可以通过索引数组来检索任何行。例如,第5行是lines[4]
答案 1 :(得分:0)
知道行索引从文件中读取单词的最佳方法是什么?
从Java 8开始,您可以使用Stream API:
long lineIndex = 3; // e.g.: fourth line
String line = Files.lines(Paths.get("myfile.txt"))
.skip(lineIndex)
.findFirst()
.get();
但是既然你需要检查每一行而你想要打印行号,那么while循环是你最好的选择,因为Java 8流没有索引(找出为什么here) 。