package com.imooc.io;
import java.io.File;
import java.io.IOException;
//列出File的一些常用操作,比如过滤、遍历等操作
public class FileUtils {
/**
* 列出指定目录下(包括其子目录的)所有文件
*
* @param dir
* @throws IOException
*/
public static void listDirectory(File dir) throws IOException {
if (!dir.exists()) {
throw new IllegalArgumentException("目录:" + dir + "不存在.");
}
if (!dir.isDirectory()) {
throw new IllegalArgumentException(dir + "不是目录!");
}
// String[] filenames = dir.list();//返回的是字符串数组 直接子的名称,不包含目录下的内容
// for (String s : filenames) {
// System.out.println(dir + "\\" + s);
// }
//如果要遍历子目录下的内容就需要构造成File对象的递归操作,File提供了直接返回File对象
File[] files = dir.listFiles();//返回的是直接子目录(文件)的对象
if (files != null && files.length > 0) {
for (File file : files) {
if (file.isDirectory()) {
//递归
listDirectory(file);
} else {
System.out.println(file);
}
}
}
}
}
import java.io.File;
import java.io.IOException;
// 列出file类的一些常用操作,不如过滤、遍历等操作
public class FileUtils {
public static void listDirectory(File dir) throws IOException{
// exists()方法用于判断文件或目录是否存在
if(!dir.exists()){
throw new IllegalArgumentException("目录:" + dir + "不存在");
}
// isDirectory()方法用于判断File类的对象是否是目录
if(!dir.isDirectory()){
throw new IllegalArgumentException(dir + "不是目录");
}
// list方法用于列出当前目录下的子目录和文件
/*String[] filenames = dir.list(); // 返回的是字符串数组 直接子的名称 不包含子目录下的内容
for (String string : filenames) {
System.out.println(dir + ":\\" + string);
}*/
// 如果要遍历子目录下的内容就需要构造成File对象做递归操作,File提供了返回File对象的API
File[] files = dir.listFiles(); // 返回的是直接子目录(文件)的抽象
//for (File file : files) {
//System.out.println(file);
if(files!=null && files.length > 0){
for (File file : files) {
if(file.isDirectory()){
// 递归
listDirectory(file);
}else{
System.out.println(file);
}
}
}
}
}
list()方法列出当前目录下的子目录和文件
333333333
222222222
11111111111
https://blog.csdn.net/wangailin666/article/details/105010120
File.list()方法用于列出当前目录下的子目录和文件,获取该目录下的所有文件
File.listFiles()返回的是直接子目录(文件)的抽象,获取该目录下所有文件和目录的绝对路径
通过list()方法获取的结果:
通过listFiles()方法获取的结果:
图转自博客:bingguang1993
讲了一大堆
递归遍历目录
遍历目录
.exists()方法用于判断文件或目录是否存在
.isDirectory()方法用于判断File类的对象是否是目录
.list()方法用于列出当前目录下的子目录和文件
.listFiles()返回的是直接子目录(文件)的抽象
list() 方法用于列出当前目录下的子目录和文件
如何遍历目录及其子文件
遍历目录。
file.list()返回文件(目录)名
file.listFiles返回文件(目录)的抽象(对象)
list()方法用于列出当前目录下的子目录和文件
遍历所有文件、目录,使用递归方式
真正的操作方法,但是还是不会做递归遍历
dir.list不包括子目录的文件
import os
import os.path
import re
pattern=r"\.\w+$" def bianli(i): if os.path.isdir(i): for ii in os.listdir(i): ii=i+"\\"+ii if os.path.isfile(os.path.abspath(ii)): try: s = re.search(pattern, ii).group() print(ii, "-----------是一个%s文件" % s) except: print(ii) elif os.path.isdir(os.path.abspath(ii)): print(ii) bianli(ii) elif os.path.isfile(i): print(i,"是一个文件") bianli(r"C:\Python27")
异常
throw new IllegalArgumentException("目录"+File对象+"不存在");
获取目录下的文件或文件夹名 不包含子目录下的内容
String[] fileName = file.list();
获取目录下的文件或文件夹名 包含子目录下的内容
File[] files = file.listFile(); //判断files是否为空并长度大于0 if(files!=null && files.length > 0){ for(File file : files){ //判断是否是文件夹 if(file.isDirectory()){ //递归 listDirectory(file); }else{ System.out.println(file); } } }
递归操作文件目录
列出File的一些常用操作:过滤、遍历等
isDirectory()方法用于判断File类的对象是否是目录
String[] filenames = dir.list(); //返回的是字符串数组,直接子的名称,不包含子目录下的内容
如果要遍历子目录下的内容就需要构造File对象做递归操作吗,File提供了直接返回File对象的api
File[] files = dir.listFiles(); 返回的是直接子目录(文件)的抽象
if(file.isDirectory())
//递归,最终列出包括其子目录下的所有文件(不包含子目录)
listDirectory(file);
import java.io.File; import java.io.IOException; public class FileUtilTest1 { public static void main(String args[]) throws IOException { FileUtil.listDirectory(new File("D:\\360安全浏览器下载\\ceshi")); } } //列出File的一些常用操作,比如过滤,遍历 public class FileUtil { /** * 列出指定目录下(包括其子目录)的所有文件 * @param dir */ public static void listDirectory(File dir) throws IOException { if (!dir.exists()){ throw new IllegalArgumentException("目录:"+dir+"不存在"); } if (!dir.isDirectory()){ throw new IllegalArgumentException(dir+"不是目录"); } /* String[] filenames = dir.list();//返回字符串数组 for (String string : filenames){ //列出该目录下直接的(第一层)文件和目录的名称 System.out.println(string); //列出该目录下直接的(第一层)文件和目录,包括父路径 System.out.println(dir+"\\"+string); } */ //如果要遍历子目录下的内容就需要构造File对象做递归操作,File提供了直接返回File对象 File[] files = dir.listFiles();//返回的是直接的子目录(文件)的抽象 //并不会递归 // for (File file : files){ // //列出该目录下直接的(第一层)文件和目录,包括父路径 // System.out.println(file); // } //列出该目录下所有的文件 if (files != null && files.length > 0){ for (File file : files){ if (file.isDirectory()){ //递归 listDirectory(file); }else { System.out.println(file); } } } } }
对象做递归操作,File提供了直接返File]files =dir.listFiles0;/返回的是直接子目录(文件)的抽象if(files!=null&&files.length>0){
for(File file:files){
if(file.isDirectory0){
//递归
listDirectory(file);
}else{
System.outprintln(file);
}
}
}
String[] filenames=dir.list();//返回的事字符串数组,即当前目录下子文件的名称
在listDirectory(File dir) 方法中
创建 File[] files = dir.listFiles();
如果文件夹非空,且数量大于0
开始遍历
这个是目录吗?
是,就将此目录的路径传入listDirectory(File dir) 中[调用自身]
循环询问,这个是目录吗?(相当于一个目录一个目录的进去问)
不是目录就打印出来。System.out.println(st);
由此可以遍历目录下所有的文件。