黑马程序员——Java基础——IO流的File类
2015-09-13 11:21
567 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
File类:是用来操作文件和文件夹的类(流只能操作数据,不能操作文件)
一、获取信息
获取文件名称:getName()
获取相对路径:getPath( )
获取绝对路径:getAbsolutePath( )
获取绝对路径中的父目录:getParent( )
获取最后一次修改的时间:lastModefied( )
获取文件的长度:length( )
File类的其他主要方法:
File listRoots( ) :列出可用的系统根,如 C,D , F 盘 等
String list( ):返回一个字符串数组,表示目录中的文件和目录
String list( FilenameFilter ): 这里传入了一个过滤器,可以指定要获取的文件类型
File listFiles( ) :返回文件数组,表示目录中的文件
boolean createNewFile( ):创建一个空文件
boolean mkdir( ) :创建一个新目录
boolean mkdirs( ):创建一个多层新目录
boolean delete( ) : 删除文件或目录
boolean renameTo(File) : 重命名文件
列出指定目录下的所有内容:
因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可,在列出过程中出现的还是目录的话,还可以再次调用本功能,也就是函数自身调用自身,这种表现形式,或者编程手法,称为递归。
递归要注意:
1、限定条件;
2、要注意递归的次数,尽量避免内存溢出。
删除一个带内容的目录,删除原理:
在window中,删除目录从里面往外删除的,既然是从里往外删除,就需要用到递归。
File类:是用来操作文件和文件夹的类(流只能操作数据,不能操作文件)
一、获取信息
获取文件名称:getName()
获取相对路径:getPath( )
获取绝对路径:getAbsolutePath( )
获取绝对路径中的父目录:getParent( )
获取最后一次修改的时间:lastModefied( )
获取文件的长度:length( )
import java.io.*; import java.text.*; import java.util.*; public class FileDemo { public static void main(String[] args) { File f1=new File("f:\\aa.txt"); String name=f1.getName(); String path=f1.getPath(); String absolutePath=f1.getAbsolutePath(); String parent=f1.getParent(); long time=f1.lastModified(); long length=f1.length(); //转换时间格式 Date d=new Date(time); DateFormat df=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG); String conTime=df.format(d); System.out.println("name:"+name); System.out.println("path:"+path); System.out.println("absolutePath:"+absolutePath); System.out.println("parent:"+parent); System.out.println("time:"+time); System.out.println("转换后的时间为"+conTime); System.out.println("length:"+length); } }
File类的其他主要方法:
File listRoots( ) :列出可用的系统根,如 C,D , F 盘 等
String list( ):返回一个字符串数组,表示目录中的文件和目录
String list( FilenameFilter ): 这里传入了一个过滤器,可以指定要获取的文件类型
File listFiles( ) :返回文件数组,表示目录中的文件
boolean createNewFile( ):创建一个空文件
boolean mkdir( ) :创建一个新目录
boolean mkdirs( ):创建一个多层新目录
boolean delete( ) : 删除文件或目录
boolean renameTo(File) : 重命名文件
import java.io.*; public class FileTest2 { public static void main(String[] args) throws Exception { //test1(); //test2(); //test3(); //test4(); test5(); } public static void test1() { File[] root=File.listRoots(); //列出可用系统根,该方法为静态方法 for(File r:root) { System.out.println(r); } } public static void test2() { File f2=new File("f:\\abc"); String[] fileName=f2.list(); //列出指定目录的文件和目录 for(String s:fileName) { System.out.println(s); } String[] javaFileName=f2.list(new FileByJava());//列出目录中的符合过滤器要求的文件和目录 for(String s:javaFileName) { System.out.println(s); } } public static void test3() { File f3=new File("f:\\abc"); File[] file=f3.listFiles(); for(File f:file) { System.out.println(f.length()); //可以操作文件,打印各文件的长度 } } public static void test4() throws IOException { File file1=new File("f:\\cc.txt"); file1.createNewFile(); //创建 cc.txt 文件 file1.delete(); //删除指定文件 File file2=new File("f:\\dd"); file2.mkdir(); //创建 dd文件夹,只能创建不存在的一层的 File file3=new File("f:\\ee\\ff\\gg"); file3.mkdirs(); // mkdirs()方法,可以创建不存在的多层文件夹 } public static void test5() throws IOException { File f5=new File("f:\\111.txt"); //f5.createNewFile(); File renameFile=new File("g:\\222.txt");//把文件重命名,如果是剪切文件也可以用这方法 f5.renameTo(renameFile); } } class FileByJava implements FilenameFilter //定义一个过滤器,通过实现FilenameFilter接口 { public boolean accept(File dir,String name) //覆盖接口中的accept()方法 { return name.endsWith("java"); //如果文件符合该要求,返回true } }
列出指定目录下的所有内容:
因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可,在列出过程中出现的还是目录的话,还可以再次调用本功能,也就是函数自身调用自身,这种表现形式,或者编程手法,称为递归。
递归要注意:
1、限定条件;
2、要注意递归的次数,尽量避免内存溢出。
import java.io.*; public class ListAllFile { public static void main(String[] args) { File file=new File("f:\\aa"); listAll(file); } public static void listAll(File file) { File[] files=file.listFiles(); for(File f:files) { if(f.isDirectory()) //判断遍历到的文件是否文件夹,是的话就调用自身(即递归) { listAll(f); } System.out.println(f); } } }
删除一个带内容的目录,删除原理:
在window中,删除目录从里面往外删除的,既然是从里往外删除,就需要用到递归。
import java.io.*; public class DeleteFile { public static void main(String[] args) { File file=new File("f:\\aa"); deleteAll(file); System.out.println("删除成功"); } public static void deleteAll(File file) { File[] files=file.listFiles(); for(File f:files) { if(f.isDirectory()) { deleteAll(f); //判断是否目录,递归 } f.delete(); } file.delete(); //这个不能遗漏,最后要把最外面的文件夹也删除 } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统