0

我正在加载一个 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();
            }
        }
    }
}
4

2 回答 2

1

CSV 处理比您最初想象的要复杂得多。

导致噩梦的问题是不同的列分隔符,语言环境(例如,如果您使用,列分隔符,它可能会在某些语言环境中以双精度回火,因为它用于表示小数),列有时用特殊字符包裹(如"'),转义进入图片等。

如果您允许我提出建议,请使用成熟的 CSV 库来完成OpenCSV之类的任务(但那里有很多替代方案)。使用起来非常简单,请参阅链接站点以获取示例。

于 2013-11-06T10:15:20.697 回答
0

用这个。已重组您的代码。如果 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();
        }
    }
于 2013-11-06T10:04:42.623 回答