File tempFile = new File(loadedFileName);
FileInputStream datStream = new FileInputStream(tempFile);
InputStreamReader readDat = new InputStreamReader(datStream);
int data = readDat.read();
String temp = "";
// keeps reading in one character at a time and returns -1 if there are no more
// characters
while(data != -1){
char datChar = (char)data;
if(temp.length() > 2){
if((temp.substring(temp.length()-1)).equals("\n")){
String[] arrayTemp = temp.split("\\|");
if(Float.valueOf(arrayTemp[columnNumber-1]) > value){
System.out.print(temp);
}
temp = "";
}
}
temp = temp+datChar;
data = readDat.read();
}
该代码逐个字符地读取文件并将其附加到字符串中。一旦到达新行,它将字符串拆分为一个数组,然后检查该数组中的值是否匹配并在拆分之前打印出字符串。
这段代码的问题在于,即使它完成了大部分工作,因为它是如何在一个 while 循环中检查它是否到达末尾的,如果它到达了它会返回 -1。这使得我无法打印文件的最后一行,因为文件末尾没有新行,所以它在打印出最后一行之前终止了循环。
读入几行的示例。
这个| 世界| 是| 棕色 | 和 | 脏|
24 | 小时 | 是| 在| 天| 你好|
无法将整个文件存储到数组中,无法使用缓冲阅读器,我尝试过计算“|”的数量 但我似乎无法让它发挥作用。所以在这种情况下,如果它计数到 6 个管道,它就会分裂,然后在打印前检查。我认为这可以解决不打印最后一行的问题。这是我尝试实现 | 计数的方法。
while(data != -1){
char datChar = (char)data;
// checks to make sure that temp isn't an empty string first
if(temp.length() > 2){
// checks to see if a new line started and if it did splits the current string into an array.
if((temp.substring(temp.length()-1)).equals("\\|")){
if(count == 6){
String[] arrayTemp = temp.split("\\|");
//then checks the variable in the array col and compares it with a value and prints if it is greater.
if(Float.valueOf(arrayTemp[columnNumber-1]) > value){
System.out.print(temp);
}
temp = "";
count = 0;
}
}
}
temp = temp+datChar;
data = readDat.read();
}