-------android培训 、java培训、期待与您交流! ----------
/**
* 流的局限性:只能操作数据,不能操作文件夹【拒绝访问异常】和文件属性* -------------------------------------------------------------------------
* File类的常见方法:
* 1. 增boolean createNewFile()【存在则不再创建】
* 创建文件夹 mkdir(); mkdirs,创建多级目录文件夹
* 删 delete()
* deleteOnExit()【JVM退出时删除(临时文件)】
* 2.判断
* 是否是目录boolean isDirectory()
* 是否是文件 isFile()
* 是否存在 exists()
* 是否是隐藏文件 isHidden()
* 是否是绝对路径 isAbsolute()
*
* 2. 获取
* 获取(绝对)路径 getPath() getAbsolutePath【文件可以不存在】
* 绝对路径中的父目录 getParent()
* 最后一次修改时间 long lastModified()
* 长度:length()
* file1.renameTo(file2)剪切,如果file2存在,剪切失败
* 3。修改:用流
*-------------------------------------------------------------------------
* 注意:
*1.判断文件是目录还是文件时,记得先判断该文件是否存在,因为不存在的文件既不是目录,也不是文件
*2.文件名是xx.txt不一定就是文件夹哦,例如:
* File file = new File("1.txt");
System.out.println(file.mkdir());
System.out.println("directory:"+file.isDirectory()); -----true
System.out.println("file:"+file.isFile()); -----false
当然,前提是file.mkdir()创建成功。
*/
package com.heima.io.file;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
*
* 要求:列出指定文件夹下所有文件【包括子文件夹下的】
* 思想:递归:函数自己调用自己
* 递归使用注意:
* 1.限定条件,就是出口(递归相当于是一个循环,限定条件就是循环结束条件)
* 2.每次递归都会在方法区开辟一块内存,而且都没有结束,一旦递归次数过多就容易产生内存溢出
*/
public class ListAllFiles {
public static void main(String[] args) {
List<File> list = getFiles(new File("hello"));
for(File f : list){
System.out.println(f.getName());
}
}
/**
* 得到指定文件夹下所有文件【包括子文件夹下的文件】
* @param dir
* @return
*/
public static List<File> getFiles(File dir){
List<File> list = new ArrayList<File>();
File[] files = dir.listFiles();
for(File f : files){
if(f.isDirectory()){//如果是目录,递归
for(File subf : getFiles(f)){
list.add(subf);
}
}else{
list.add(f);//是文件则添加进list
}
}
return list;
}
/**
* 删除指定文件夹下所有文件和文件夹
* @param dir
* @return
*/
public static boolean deleteFiles(File dir){
boolean flag = true;
if(dir.exists() && dir.isDirectory()){
File[] files = dir.listFiles();
for(File f : files){
if(!f.isHidden()){
if(f.isDirectory()){
if(!deleteFiles(f)){
flag = false;
}
}else{
if(!f.delete()){//删除文件失败
flag = false;
}
}
}
}
if(!dir.delete()){//删除文件夹失败
flag = false;
}
}else{
flag = false;
}
return flag;
}
/**
* 用递归实现十进制转二进制
* @param n
* @return
*/
public static String toBin(long n){
StringBuffer sb = new StringBuffer();
if(n>0){
sb.append(toBin(n/2));
sb.append(n%2);
}
return sb.toString();
}
}
package com.heima.io.file;
import java.io.File;
import java.io.FilenameFilter;
/**
* 功能:列出指定目录下所有Java文件
* 对文件名过滤
*
*/
public class FilenameFilterDemo {
public static void main(String[] args) {
File file = new File("src\\com\\heima\\basic");
File[] list = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if(name.endsWith("java")){
return true;
}
return false;
}
});
for(File f : list){
System.out.println(f.getName());
}
}
}
------- android培训 、 java培训 、期待与您交流! ----------