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);
由此可以遍历目录下所有的文件。