java - 在 NetBeans 中逐行读取文本文件
问题描述
我正在使用以下代码从文件中读取
int lineNumber = 0;
try{
BufferedReader in = new BufferedReader (new FileReader("electric.txt"));
String line = null;
while((line = in.readLine()) != null){
lineNumber++;
system.out.println("Line "+ lineNumber + " : "+ line);
}
} catch(IOException e){
e.printStackTrace();
}
我的文件在每一行都有特定的值,例如第一行是 int、第二个字符串、第三个布尔值等...
我的问题是如何获取变量中的每种数据类型?
解决方案
基本上,在一种天真的方法中,您只需根据需要进行尽可能多的读取:
String firstLine = in.readLine();
String secondLine = in.readLine();
...
然后你可以做类似的事情:
Whatever dataObject = new Whatever(firstLine, secondLine, ...);
例如(可能在一个循环中,因为您可能想要读取许多数据对象的数据,而不仅仅是一个数据对象)。
换句话说:您在一些辅助变量中读取所需的属性,然后将它们推送到您要填充数据的对象中。优点:这适用于非常大的数据,因为您一次只能读取几行。缺点:您必须担心无效文件、丢失行和此类事情(因此您需要大量的错误处理)。
或者:只需先将整个文件读入内存,例如使用List<String> allLines = java.util.Files.readAllLines(somePathToYourFile);
然后,您迭代这些allLines
以进一步处理您的内容,现在无需担心 IOExceptions。
推荐阅读
- angular - 使用 REST API 时 mat-table 数据源不起作用
- java - 未能执行目标 org.apache.maven.plugins:maven-jar-plugin:3.1.2:jar (default-jar)
- c# - 如何在 ExtentReports 版本 4 中保留所有执行的历史记录?
- visual-studio-code - 如何将 Chrome 开发人员配置文件与 Visual Studio 代码调试器一起使用
- swiftui - SwiftUI TabView:带有自定义图像的 .tabItem 不显示
- ios - iOS tableview 单元格自动 imageView 高度
- xml - 在 for-each 循环中减去两个值
- angular - Angular 7 - 更改检测不适用于 ngx-build-plus 自定义 webpack 配置
- c - 如何在C程序中创建线程
- java - 如何根据选择的按钮从类中调用方法?