用Java读取CSV文件

用Java读取CSV文件,java,csv,io,Java,Csv,Io,我编写了一个程序,读取csv文件并将其放入TableModel中。我的问题是,我想扩展程序,这样,如果csv文件从外部得到更改,我的tablemodel就会更新并得到新的值 现在,我将编写一个调度程序,使线程休眠约一分钟,并在文件的时间戳更改时每分钟检查一次。如果是这样,它将再次读取该文件。但是我不知道如果我使用调度器,整个程序会发生什么,因为我编写的这个小软件将是运行在JDK 6上的一个更大的软件的一部分。因此,我寻找一个性能良好且独立于大型软件解决方案的解决方案,以获得表格模型中的更改 有人

我编写了一个程序,读取csv文件并将其放入TableModel中。我的问题是,我想扩展程序,这样,如果csv文件从外部得到更改,我的tablemodel就会更新并得到新的值

现在,我将编写一个调度程序,使线程休眠约一分钟,并在文件的时间戳更改时每分钟检查一次。如果是这样,它将再次读取该文件。但是我不知道如果我使用调度器,整个程序会发生什么,因为我编写的这个小软件将是运行在JDK 6上的一个更大的软件的一部分。因此,我寻找一个性能良好且独立于大型软件解决方案的解决方案,以获得表格模型中的更改


有人能帮忙吗

java.nio.file
包现在包含。这实际上是:

此API允许您向注册目录 值班服务。注册时,您会告诉服务哪些类型的 您感兴趣的事件:文件创建、文件删除或文件删除 修改。当服务检测到感兴趣的事件时,它将 转发到已注册进程。注册的进程具有 线程(或线程池)专用于监视它所监视的任何事件 已注册为。当事件发生时,会根据需要进行处理

见参考资料


哦!!此API仅在JDK 7(以后版本)中可用。

java.nio.file
包现在包含。这实际上是:

此API允许您向注册目录 值班服务。注册时,您会告诉服务哪些类型的 您感兴趣的事件:文件创建、文件删除或文件删除 修改。当服务检测到感兴趣的事件时,它将 转发到已注册进程。注册的进程具有 线程(或线程池)专用于监视它所监视的任何事件 已注册为。当事件发生时,会根据需要进行处理

见参考资料


哦!!此API仅适用于JDK 7(以后版本)。

您应该使用Quartz Scheduler来执行此操作。不,只需使用Executor服务即可。@vikiii我在谷歌上搜索了Quartz Scheduler,这与我们在工作中使用的框架相同。所以我认为这是解决我的问题的最好方法,因为我对maven的工作也很陌生。你应该使用Quartz Scheduler来做这件事。不,只使用Executor服务。@Vikii我在谷歌上搜索了Quartz Scheduler,这和我们在工作中使用的框架是一样的。所以我认为这是解决我的问题的最好方法,因为我对这个maven的工作也很陌生。+1是的,这是一个比轮询文件更好的解决方案。它可能立即工作,并避免了轮询的开销。哦,这不是很好,因为我们的主软件运行在jdk 6上。我正要学习api:DF对于JDK 6,您需要编写自己的文件监视和轮询,使用。+1是的,这是一个比轮询文件更好的解决方案。它可能立即工作,并避免了轮询的开销。哦,这不是很好,因为我们的主软件运行在jdk 6上。我刚刚要学习api:DF对于JDK 6,您需要使用。
**OpenCsv is a best way to read csv file in java.
if your are using maven then you can use below dependency or download it's jar from web.**

 @SuppressWarnings({"rawtypes", "unchecked"})
  public void readCsvFile() {
    CSVReader csvReader;
    CsvToBean csv;
    File fileEntry; 
    try {
      fileEntry = new File("path of your file");
      csv = new CsvToBean();
      csvReader = new CSVReader(new FileReader(fileEntry), ',', '"', 1);
      List list = csv.parse(setColumMapping(), csvReader);
     //List of LabReportSampleData class
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  //Below function is used to map the your csv file to your mapping object. 
  //columns String array: The value inside your csv file. means 0 index map with degree variable in your mapping class.
  @SuppressWarnings({"rawtypes", "unchecked"})
  private static ColumnPositionMappingStrategy setColumMapping() {
    ColumnPositionMappingStrategy strategy = new ColumnPositionMappingStrategy();
    strategy.setType(LabReportSampleData.class);
    String[] columns =
        new String[] {"degree", "radian", "shearStress", "shearingStrain", "sourceUnit"};
    strategy.setColumnMapping(columns);
    return strategy;
  }