package com;
import java.io.File;
/**
*
* @author ?Mukesh
*/
public class ListFiles {
static File mainFolder = new File("D:\\Movies");
public static void main(String[] args)
{
ListFiles lf = new ListFiles();
lf.getFiles(lf.mainFolder);
long fileSize = mainFolder.length();
System.out.println("mainFolder size in bytes is: " + fileSize);
System.out.println("File size in KB is : " + (double)fileSize/1024);
System.out.println("File size in MB is :" + (double)fileSize/(1024*1024));
}
public void getFiles(File f){
File files[];
if(f.isFile())
System.out.println(f.getAbsolutePath());
else{
files = f.listFiles();
for (int i = 0; i < files.length; i++) {
getFiles(files[i]);
}
}
}
}
97
/**
* Function to read all mp3 files from sdcard and store the details in an
* ArrayList
*/
public ArrayList<HashMap<String, String>> getPlayList()
{
ArrayList<HashMap<String, String>> songsList=new ArrayList<>();
File home = new File(MEDIA_PATH);
if (home.listFiles(new FileExtensionFilter()).length > 0) {
for (File file : home.listFiles(new FileExtensionFilter())) {
HashMap<String, String> song = new HashMap<String, String>();
song.put(
"songTitle",
file.getName().substring(0,
(file.getName().length() - 4)));
song.put("songPath", file.getPath());
// Adding each song to SongList
songsList.add(song);
}
}
// return songs list array
return songsList;
}
/**
* Class to filter files which have a .mp3 extension
* */
class FileExtensionFilter implements FilenameFilter
{
@Override
public boolean accept(File dir, String name) {
return (name.endsWith(".mp3") || name.endsWith(".MP3"));
}
}
private static void addfiles(File inputValVal, ArrayList<File> files)
{
if(inputVal.isDirectory())
{
ArrayList <File> path = new ArrayList<File>(Arrays.asList(inputVal.listFiles()));
for(int i=0; i<path.size(); ++i)
{
if(path.get(i).isDirectory())
{
addfiles(path.get(i),files);
}
if(path.get(i).isFile())
{
files.add(path.get(i));
}
}
/* Optional : if you need to have the counts of all the folders and files you can create 2 global arrays
and store the results of the above 2 if loops inside these arrays */
}
if(inputVal.isFile())
{
files.add(inputVal);
}
}
public static ArrayList<File> listFilesForFolder(final File folder,
final boolean recursivity,
final String patternFileFilter) {
// Inputs
boolean filteredFile = false;
// Ouput
final ArrayList<File> output = new ArrayList<File> ();
// Foreach elements
for (final File fileEntry : folder.listFiles()) {
// If this element is a directory, do it recursivly
if (fileEntry.isDirectory()) {
if (recursivity) {
output.addAll(listFilesForFolder(fileEntry, recursivity, patternFileFilter));
}
}
else {
// If there is no pattern, the file is correct
if (patternFileFilter.length() == 0) {
filteredFile = true;
}
// Otherwise we need to filter by pattern
else {
filteredFile = Pattern.matches(patternFileFilter, fileEntry.getName());
}
// If the file has a name which match with the pattern, then add it to the list
if (filteredFile) {
output.add(fileEntry);
}
}
}
return output;
}
最好的,阿德里安
9
void getFiles(){
String dirPath = "E:/folder_name";
File dir = new File(dirPath);
String[] files = dir.list();
if (files.length == 0) {
System.out.println("The directory is empty");
} else {
for (String aFile : files) {
System.out.println(aFile);
}
}
}
5
File folder = new File("/Users/you/folder/");
File[] listOfFiles = folder.listFiles();
for (File file : listOfFiles) {
if (file.isFile()) {
System.out.println(file.getName());
}
}
Path dir = ...;
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
for (Path file: stream) {
System.out.println(file.getFileName());
}
} catch (IOException | DirectoryIteratorException x) {
// IOException can never be thrown by the iteration.
// In this snippet, it can only be thrown by newDirectoryStream.
System.err.println(x);
}
您还可以创建一个过滤器,然后将其传递给上面的 newDirectoryStream 方法
DirectoryStream.Filter<Path> filter = new DirectoryStream.Filter<Path>() {
public boolean accept(Path file) throws IOException {
try {
return (Files.isRegularFile(path));
} catch (IOException x) {
// Failed to determine if it's a file.
System.err.println(x);
return false;
}
}
};
import java.io.File;
public class List {
public static void main(String[] args) {
for (String f : args) {
listDir(f);
}
}
private static void listDir(String dir) {
File f = new File(dir);
File[] list = f.listFiles();
if (list == null) {
return;
}
for (File entry : list) {
System.out.println(entry.getName());
if (entry.isDirectory()) {
listDir(entry.getAbsolutePath());
}
}
}
}
0
import java.io.File;
public class Test {
public void test1() {
System.out.println("TEST 1");
}
public static void main(String[] args) throws SecurityException, ClassNotFoundException{
File actual = new File("src");
File list[] = actual.listFiles();
for(int i=0; i<list.length; i++){
String substring = list[i].getName().substring(0, list[i].getName().indexOf("."));
if(list[i].isFile() && list[i].getName().contains(".java")){
if(Class.forName(substring).getMethods()[0].getName().contains("main")){
System.out.println("CLASS NAME "+Class.forName(substring).getName());
}
}
}
}
}
只需通过您的文件夹,它将告诉您关于该方法的主类 .
3
static File mainFolder = new File("Folder");
public static void main(String[] args) {
lf.getFiles(lf.mainFolder);
}
public void getFiles(File f) {
File files[];
if (f.isFile()) {
String name=f.getName();
} else {
files = f.listFiles();
for (int i = 0; i < files.length; i++) {
getFiles(files[i]);
}
}
}
29 回答
您可以过滤任何文本文件或任何其他扩展名 . 只需用.MP3替换它
我认为这是阅读文件夹和子文件夹中所有文件的好方法
关于此主题的所有使用新Java 8函数的答案都忽略了关闭流 . 接受的答案中的例子应该是:
从
Files.walk
方法的javadoc:Files.walk API可从Java 8获得 .
该示例使用API指南中推荐的try-with-resources模式 . 它确保无论何种情况都将关闭流 .
这样可以正常工作:
如果您想要更多选项,可以使用此功能,该功能旨在填充文件夹中存在的文件的arraylist . 选项包括:recursivility和要匹配的模式 .
最好的,阿德里安
您可以将文件路径放入参数并创建包含所有文件路径的列表,而不是手动将其放在列表中 . 然后使用for循环和阅读器 . txt文件示例:
在https://stackoverflow.com/a/286001/146745上看到
java.io.FileFilter
的很好用法虽然我同意Rich,Orian和其他人使用:
出于某种原因,这里的所有示例都使用 absolute 路径(即从root用户,或者说,驱动器号(C:\)用于Windows ..)
我想补充一点,也可以使用 relative 路径 . 所以,如果你是pwd(当前目录/文件夹)是folder1并且你想要解析folder1 /子文件夹,你只需编写(在上面的代码而不是):
Java 8
Files.walk(..)
很好,当你感到厌倦它不会抛出Avoid Java 8 Files.walk(..) termination cause of ( java.nio.file.AccessDeniedException ) .这是一个安全的解决方案,虽然不如Java 8
Files.walk(..)
那么优雅:防止listFiles()函数上的Nullpointerexceptions并递归获取子目录中的所有文件..
为了扩展已接受的答案,我将文件名存储到ArrayList(而不是将它们转储到System.out.println)我创建了一个帮助类“MyFileUtils”,因此它可以被其他项目导入:
我添加了文件名的完整路径 . 你会像这样使用它:
ArrayList由“value”传递,但该值用于指向生活在JVM堆中的相同ArrayList对象 . 这样,每个递归调用都会将文件名添加到同一个ArrayList中(我们不会在每次递归调用时创建新的ArrayList) .
上面有很多好的答案,这里有一个不同的方法:在maven项目中,您放在resources文件夹中的所有内容都默认复制到target / classes文件夹中 . 查看运行时可用的内容
现在要从特定文件夹中获取文件,假设您在资源文件夹中有一个名为“res”的文件夹,只需替换:
如果您想要在com.companyName包中访问,那么:
在Java 7中,您现在可以这样做 - http://docs.oracle.com/javase/tutorial/essential/io/dirs.html#listdir
您还可以创建一个过滤器,然后将其传递给上面的
newDirectoryStream
方法其他过滤示例 - http://docs.oracle.com/javase/tutorial/essential/io/dirs.html#glob
只需使用
Files.walkFileTree
(Java 7)浏览所有文件在Java 8中,您可以执行此操作
这将打印文件夹中的所有文件,同时排除所有目录 . 如果您需要一个列表,以下内容将:
如果你想返回
List<File>
而不是List<Path>
只是映射它:您还需要确保关闭流!否则,您可能会遇到一个异常,告诉您打开了太多文件 . 有关更多信息,请阅读here .
与Java 1.7一起使用的简单示例,以递归方式列出命令行中指定的目录中的文件:
只需通过您的文件夹,它将告诉您关于该方法的主类 .
这将在给定路径中读取指定的文件扩展名文件(也查看子文件夹)