File folder = new File("C:/Path/Dir");
File[] listOfFiles = folder.listFiles();
for (File file : listOfFiles) {
if (file.isFile()) {
String csvFile = file.getName();
System.out.println(csvFile);
}
}
Output:
1.csv
2.csv
3.csv
我的Dir中有3个文件,所以当我全部获得3个文件后,如何在文件阅读器中使用第一个文件:
//File reader
Path path = Paths.get(csvFile);
int lineCount = (int) Files.lines(path).count();
答案 0 :(得分:1)
如果您仅针对第一个文件,则只需使用listOfFiles[0].getName()
来获取fileName。
如果要使用满足特定条件的文件的路径,则可以使用以下代码:
File folder = new File("C:/Path/Dir");
File[] listOfFiles = folder.listFiles();
String csvFile = null;
for (File file : listOfFiles) {
if (file.isFile() && <condition>) {
csvFile = file.getName();
System.out.println(csvFile);
break;
}
}
答案 1 :(得分:0)
listOfFiles[0]
应该让您拥有第一个要素。
请阅读有关Java数组的一些教程: https://www.javatpoint.com/array-in-java
答案 2 :(得分:0)
那里:
File folder = new File("C:/Path/Dir");
File[] listOfFiles = folder.listFiles();
for (File file : listOfFiles) {
if (file.isFile()) {
String csvFile = file.getName();
System.out.println(csvFile);
// Reader (for all files)
try {
FileReader reader = new FileReader(file);
} catch (IOException e) { /* TODO */ }
// Line count (for all files)
int lineCount = (int) Files.lines(file.toPath()).count();
}
}
// Reader (for first file)
File firstFile = listOfFiles[0];
try {
FileReader reader = new FileReader(file);
} catch (IOException e) { /* TODO */ }
// Line count (for first file)
int lineCount = (int) Files.lines(firstFile.toPath()).count();
答案 3 :(得分:0)
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
System.out.println("File " + listOfFiles[i].getName());
} else if (listOfFiles[i].isDirectory()) {
System.out.println("Directory " + listOfFiles[i].getName());
}
}
然后我用 我的文件阅读器中的listOfFiles [i]
对不起,暂时转储了)
答案 4 :(得分:0)
当您仅对文件(而不是目录等)感兴趣时,可以在File.listFiles调用中指定此条件:
File[] files=new File("c:/tmp").listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
return file.isFile();
}
});
或使用Java 8 Lambdas
File[] files=new File("c:/tmp").listFiles((f)->{return f.isFile();});
在文件列表中,您可以选择第一个文件,就像选择数组的第一个元素一样:
System.out.println("First file:"+(files.length>0?files[0]:" no files"));
答案 5 :(得分:0)
简单,您将所有文件放在文件数组中
File[] listOfFiles = folder.listFiles();
因此您可以按如下所示直接按索引访问第一个文件(索引以0开头)
Path path = Paths.get(listOfFiles[0].getName());
int lineCount = (int) Files.lines(path).count();
答案 6 :(得分:0)
您需要弄清两件事:第一是只读文件而不是文件夹;第二是哪个文件是fisrt文件。以下代码假定您要读取文件并按字典顺序按文件名获取第一个文件:
private static void readFirstFile(String path) throws Exception {
File folder = new File(path);
File[] files = folder.listFiles(File::isFile);
if (null == files || files.length < 3) {
return;
}
Arrays.sort(files, Comparator.comparing(File::getName));
List<String> lines = FileUtils.readLines(files[0], "UTF-8");
lines.forEach(System.out::println);
}