java新手。我想读取一个具有如下格式行的文件
en Fox 3 1344
en Bird 19 144
en Dog 93 1234
对于每一行,我想选择第 2 列和第 3 列的内容。在第一行“Fox”和“3”的情况下。并显示它们。到目前为止,这就是我所拥有的。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class pagecounts {
public static void main(String[] args) throws FileNotFoundException {
String content = new Scanner(new File("filename")).useDelimiter("\\Z").next();
*// letter in column 2 and 3 pick code goes here.*
System.out.println(content);
}
}
任何帮助将不胜感激。
假设每一列只能包含一个值(单词/数字),您可以使用 Scanner 读取一行中的所有标记,并仅使用您感兴趣的标记。
try(Scanner sc = new Scanner(new File(path))){//try-with-resources
//will automatically close stream to file
while (sc.hasNext()){
String col1 = sc.next();
String col2 = sc.next();
int col3 = sc.nextInt();//you can also use next() if you want to get this token as String
int col4 = sc.nextInt();//same here
System.out.printf("%-15s %d%n", col2, col3);
}
}
您还可以逐行读取文件并在空间上分割每一行
try(Scanner sc = new Scanner(new File(path))){//try-with-resources
//will automatically close stream to file
while (sc.hasNextLine()){
String line = sc.nextLine();
String[] tokens = line.split("\\s+");//I assume there are no empty columns
System.out.printf("%-15s %s%n",tokens[1],tokens[2]);
}
}
您还可以将此文件视为 CSV 文件(逗号分隔值),其中值以空格分隔。要解析此类文件,您可以使用像OpenCSV这样的库,并将分隔符定义为空格
try(CSVReader reader = new CSVReader(new FileReader(path),' ')){
String[] tokens = null; // ^--- use space ' ' as delimiter
while((tokens = reader.readNext())!=null)
System.out.printf("%-15s %s%n",tokens[1],tokens[2]);
} catch (IOException e) {
e.printStackTrace();
}
使用
split
:
System.out.println(content.split(" ")[1] + " " + content.split(" ")[2]);