我有多个文件以CUSTOMER_YYYYMMDD.csv
开头(每个文件都有自己的日期)在一个由许多其他文件组成的文件夹中。我的脚本(使用BufferedReader
)已经可以读取一个具体文件中的数据,但是我想从仅命名为CUSTOMER_YYYYMMDD.csv
的文件中获取数据,但我不知道如何做到这一点。< / p>
这就是我所拥有的:
public static void main(String[] args)
{
BufferedReader br = null;
try {
String line;
br = new BufferedReader(new FileReader("/Users/ovshievb/Desktop/IP/data/tcos/INPUT/CUSTOMER_20150401.csv"));
//Nacita hlavicku CSV failu aby ji preskocit
br.readLine();
// Cteni failu radek po radku
while ((line = br.readLine()) != null) {
// System.out.println("Raw CSV data: " + line);
System.out.println("Customer: " + csvToArray(line) + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null) br.close();
} catch (IOException exception) {
exception.printStackTrace();
}
}
}
答案 0 :(得分:1)
您可以使用File#listFiles(FilenameFilter)获取文件夹/目录中已过滤的文件列表。只需提供过滤器的实现 - 您可以根据正则表达式检查文件名。
答案 1 :(得分:1)
首先,您应该获得目录中所有文件的列表。这可以通过创建目录的文件对象然后调用list()
方法来完成。
File myDirectory = new File(/path/to/my/dir/);
String[] containingFileNames = myDirectory.list();
之后,您可以遍历所有文件名并检查名称是否与模式CUSTOMER_YYYYMMDD.csv匹配
for (String fileName : containingFileNames) {
if (fileName.matches("CUSTOMER_\\d*.csv") {
// Read this file with the BufferedReader like in your code above
}
}
答案 2 :(得分:0)
将上面的代码块放入一个方法中,该方法接受一个参数来读取文件名。然后,您所要做的就是为您想要阅读的任何其他文件调用您的方法。
答案 3 :(得分:0)
首先获取文件夹中的所有CSV文件。然后递归地阅读它们。下面给出了获取文件夹中所有CSV文件的示例代码。
public static List<String> parseForCsvFiles(String parentDirectory){
File[] filesInDirectory = new File(parentDirectory).listFiles();
List<String> fileList = new ArrayList<String>();
for(File f : filesInDirectory){
if(f.isDirectory()){
parseForCsvFiles(f.getAbsolutePath());
}
String filePath = f.getAbsolutePath();
String fileExtenstion = filePath.substring(filePath.lastIndexOf(".") + 1,filePath.length());
if("csv".equals(fileExtenstion)){
//add to a list or array
fileList.add(filePath);
}
}
return fileList;
}
答案 4 :(得分:0)
试试这个:
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
File folder = new File("/Users/ovshievb/Desktop/IP/data/tcos/INPUT/");
for(File file: folder.listFiles()){
String name = file.getName();
if(name.startsWith("CUSTOMER_")){
String date = name.replace("CUSTOMER_", "");
BufferedReader br = null;
try{
String line;
df.parse(date);
br = new BufferedReader(new FileReader("/Users/ovshievb/Desktop/IP/data/tcos/INPUT/"+ name));
//Nacita hlavicku CSV failu aby ji preskocit
br.readLine();
// Cteni failu radek po radku
while ((line = br.readLine()) != null) {
// System.out.println("Raw CSV data: " + line);
System.out.println("Customer: " + csvToArray(line) + "\n");
}
}catch(ParseException ex){
// Wrong date format.
} finally {
br.close();
}
}
}