在java中读取CSV文件时无法打印空行
我有下面的代码,我在java中读取一个csv文件,csv文件如下在java中读取CSV文件时无法打印空行,java,csv,Java,Csv,我有下面的代码,我在java中读取一个csv文件,csv文件如下 "1.0.0.0","1.0.0.255","16777216","16777471","AU","Australia" "1.0.1.0","1.0.3.255","16777472","16778239","CN","China" "1.0.4.0","1.0.7.255","16778240","16779263","AU","Australia" "1.0.8.0","1.0.15.255","16779264","167
"1.0.0.0","1.0.0.255","16777216","16777471","AU","Australia"
"1.0.1.0","1.0.3.255","16777472","16778239","CN","China"
"1.0.4.0","1.0.7.255","16778240","16779263","AU","Australia"
"1.0.8.0","1.0.15.255","16779264","16781311","CN","China"
"1.0.16.0","1.0.31.255","16781312","16785407","JP","Japan"
"1.0.32.0","1.0.63.255","16785408","16793599","CN","China"
"1.0.64.0","1.0.127.255","16793600","16809983","JP","Japan"
"1.0.128.0","1.0.255.255","16809984","16842751","TH","Thailand"
以下代码用于在java中读取文件
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class CSVFileReader {
public static void main(String[] args) {
CSVFileReader obj = new CSVFileReader();
obj.run();
}
public void run() {
String csvFile = "Whois.csv";
BufferedReader br = null;
String line = "";
String cvsSplitBy = ",";
try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
// use comma as separator
String[] country = line.split(cvsSplitBy);
if(line.contains("AU") || line.contains("AU"))
{
System.out.println("Country [code= " + country[4]
+ " , name=" + country[5] + "]");
}
else
{
System.out.println("");
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
System.out.println("Done");
}
}
用这段java代码,我正在读取我得到AU的行。它正确地显示了两个结果,这是正确的,但我想知道我没有得到AU字符串的行。它应该将该行打印为空白
正如我们在csv文件代码中看到的。AU位于第一行和第三行,它在AU存在的地方打印两行。我希望输出为第一行AU,然后第二行应为空,然后在第三行中显示所需的AU值
如何打印第二个空行呢?现在,它正在打印两行,其中包含行中的AU要为非AU行写入空行,您可以写入:
String[] country = line.split(cvsSplitBy);
if( line.contains("AU") ) {
System.out.println("Country [code= " + country[4] + " , name=" + country[5] + "]");
} else {
System.out.println("");
}
尽管这种方法不是一个好的编码/设计的例子(可能除了最简单的、一次性使用的脚本,在这种情况下它并不重要)
我建议考虑分离CSV结果的处理(以方法的形式,该方法将接收CSV文件并返回已处理行/结果的集合),然后将其打印出来(接收行/结果的集合并迭代打印)
通过这种方式,您将能够以自动化的方式测试您是否正确处理了结果 您希望整行为空,还是只希望国家/地区字段为空?如果(line.contains(“AU”)| | line.contains(“AU”)?@orlandocr为空sure@WhoAmI-整行都是空白的,先生。@orlandocr也尝试过这个,但没有写。。。