[英]Writing/Altering csv file java
我正在加载CSV文件并保持活动状态,而没有关闭BufferReader。 现在,我想向CSV添加/删除更多行并获取更新的CSV。 这意味着我想在CSV文件更改时动态通知。
这是我的示例代码:
public class Check {
public static void main(String args[]) throws IOException, InterruptedException{
Check ch = new Check();
//args[0] = "C:\\Users\\raponnam\\Desktop\\GxDefault.csv";
String csvFile="C:\\Users\\raponnam\\Desktop\\GxDefault.csv";
int lineCounter=0;
if (csvFile!=null)
{
BufferedReader csvToRead = null;
try{
csvToRead = new BufferedReader(new FileReader(csvFile));
String line;
while ((line=csvToRead.readLine())!=null)
{
lineCounter++;
String[] splitLine = line.split(",");
System.out.println("no of lines-->> "+lineCounter);
}
while(true)
{
System.out.println("wait 6 seconds");
Thread.sleep(6000);
}
}finally{
//csvToRead.close();
}
}
}
}
CSV处理比您最初想的要复杂得多。
引起噩梦的问题是不同的列分隔符,区域设置(例如,如果使用,
对于列分隔符,它可能会在某些区域设置上以双精度返回,因为它用于表示小数),有时列会被特殊字符包裹(如"
或'
),转义进入图片等。
如果您允许我提供建议,请为OpenCSV之类的任务使用成熟的CSV库(但那里有很多替代方案)。 使用起来非常琐碎,请参见链接的站点以获取示例。
用这个。 重组了代码。 如果readLine返回null后返回数字,则可以假定已将某些内容添加到csv文件中。
PS :如果文件内容被删除; 该代码不起作用。
String csvFile = "C:\\a.csv";
int lineCounter = 0;
if (csvFile != null) {
BufferedReader csvToRead = null;
try {
csvToRead = new BufferedReader(new FileReader(csvFile));
String line;
while (true) {
if ((line = csvToRead.readLine()) != null) {
lineCounter++;
String[] splitLine = line.split(",");
System.out.println("no of lines-->> " + lineCounter);
}
System.out.println("wait 6 seconds");
Thread.sleep(6000);
}
} finally {
// csvToRead.close();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.