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