java中按文件中的分隔符(空格、换行符等)逐项读取文件中的数据
C++中可以根据文件中的空格、换行符、制表符等分隔符来依次读取文件中的数据,最近在java工程中遇到类似的问题,在java中也需要根据分隔符读取文件里的所有数据,查找相关javadoc文档找到了一个有用类Scanner。接下来描述这个类在这个问题中的用法:
Scanner在javadoc中的描述
The scanner can also use delimiters other than whitespace. This example reads several items in from a string:
String input = "1 fish 2 fish red fish blue fish"; Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*"); System.out.println(s.nextInt()); System.out.println(s.nextInt()); System.out.println(s.next()); System.out.println(s.next()); s.close();
prints the following output:
1 2 red blue
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws FileNotFoundException {
File file = new File("./src/base/network/test.txt");
if(!file.exists()) {
System.out.println("节点基本信息文件未找到");
System.exit(0);
}
Scanner s = new Scanner(file);
String nodeNum = s.next();
int num = s.nextInt();
String de = s.next();
String de1 = s.next();
String de2 = s.next();
String de3 = s.next();
String de4 = s.next();
int i1 = s.nextInt();
int i2 = s.nextInt();
int i3 = s.nextInt();
int i4 = s.nextInt();
System.out.println(nodeNum + ", " + num+", "+de+", "+de1+", "
+de2+", "+de3+", "+de4+", "+i1+", "+i2+", "+i3+", "+i4);
s.close();
}
}
测试所用的test.txt文档内容为
Scanner的next()方法返回的是String类型的字符串,下面是输出结果:
可以看到使用Scanner方法可以准确读取文件中所有数据。