File类的学习
来源:互联网 发布:澳洲留学体验 知乎 编辑:程序博客网 时间:2024/06/08 02:44
File类是用来将文件或文件夹封装成对象的类,使得使用者能过更加方便地对文件和文件夹进行操作
之前学习了IO流,IO流也是对文件的操作,那么为什么还要新创一个File类呢?因为IO流实际操作的是文件中数据,而不是对文件本身进行操作,而且IO流根本无法进行关于文件夹的操作,所以,引入一个File类还是很有必要的
对于File类的用法,实际上就是通过路径来对文件或文件夹进行封装,因此,在File类的使用中,路劲是最为关键的属性
构造函数:
File(String pathname)//通过路径初始化File对象,pathname可以是存在的路径,也可以是不存在的路径
File(String parent,String child)//如此构造出来的对象路径为parent+child
File(File parent,String child)
重要的方法和属性:
1,分隔符:静态属性 separator 在Windows中等价于\,利于跨平台
2,建立(虽然一开始通过提供的路径已经封装成了对象,但并不代表建立了文件(文件夹),只是有了对象,要通过对象的方法来建立文件(文件夹)):
——1,bool createNewFile()//根据File对象封装的路径来建立一个文件,如果文件已存在,则不建立,返回false
——2,bool mkdir()//根据File对象封装的路径来建立一个文件夹,但是只能建立一层,不能建立多层次的文件夹,如果文件夹已存在或路径包含多层文件夹,则不建立,返回false
——3,bool mkdirs()//可以建立多层次的文件夹
3,删除:
——1,bool delete()//删除已存在的指定文件(文件夹)
——2,bool deleteOnExit()//在程序推出时删除指定文件(文件夹)
4,判断:
——1,bool exists()//判断文件是否存在
——2,bool isFile()//判断是否是文件
——3,bool isDirectory()//判断是否是文件夹
——4,bool isHidden()//判断是否是隐藏文件
——5,bool isAbsolute()//判断路径是否是绝对路径
*注意:2,3,4:若还没建立文件(文件夹),那一定是false
5,获取信息:
——1,getName()
——2,getPath()//获取路径
——3,getParent()
——4,getAbsolutePath()//获取绝对路径
——5,lastModified()//最后修改的时间
——6,length()//路径名表示的文件的长度
6,其他:
——1,File[] listRoots()//获得有效盘符对象
——2,String[] list()//获得当前路径下所有文件名称,当前目录必须是文件夹
——3,File[] listFiles()//获得当前路径下所有文件对象
演示代码1:
原本文件:
代码:
import java.io.*;class FileDemo1{public static void main(String[] args) throws IOException//createNewFile会抛出IOException{File f1=new File("a.txt");File f2=new File("f:\\Java\\practice\\File");File f3=new File("f:"+File.separator+"Java"+File.separator+"practice\\File\\a");File f4=new File("haha.txt");File f5=new File("hehe.txt");File f6=new File("hh\\mm\\nn");System.out.println("f3 : "+f3.getPath());System.out.println("f1 : "+f1.getPath());//获取相对路径System.out.println("f1 : "+f1.getAbsolutePath());//获取绝对路径System.out.println("f1 : "+f1.exists());f1.delete();//删除a.txtSystem.out.println("f1 : "+f1.exists());System.out.println("f4_file: "+f4.isFile());System.out.println("f4_dir: "+f4.isDirectory());f4.createNewFile();//建立文件System.out.println("f4_file: "+f4.isFile());System.out.println("f4_dir: "+f4.isDirectory());f5.mkdir();//虽然路径有后缀,但是生成文件夹f6.mkdirs();//生成多层文件夹}}/*结果:f3 : f:\Java\practice\File\a 证明separator等同于'\'f1 : a.txt f1 : F:\Java\practice\File\a.txtf1 : truef1 : falsef4_file: falsef4_dir: falsef4_file: truef4_dir: false*/
修改后文件:
其中hh文件夹中还有多层文件夹
演示代码2:
File目录:
代码:
import java.io.*;class FileDemo2 {public static void sop(Object obj){System.out.println(obj);}public static void main(String[] args) {File[] farr=File.listRoots();File f=new File("f:\\Java\\practice\\File");String[] fs=f.list();File[] fa=f.listFiles();for(File arr : farr){sop(arr.getPath());}sop("=====================================");for(String str:fs){sop(str);}sop("=====================================");for(File arr:fa){sop(arr.getAbsolutePath());}}}/*结果:C:\D:\E:\F:\G:\H:\=====================================abb.txtc.txtd.txtFileDemo1.classFileDemo1.javaFileDemo1.java.bakFileDemo2.classFileDemo2.javaFileDemo2.java.bakhaha.txthehe.txthh=====================================f:\Java\practice\File\af:\Java\practice\File\bf:\Java\practice\File\b.txtf:\Java\practice\File\c.txtf:\Java\practice\File\d.txtf:\Java\practice\File\FileDemo1.classf:\Java\practice\File\FileDemo1.javaf:\Java\practice\File\FileDemo1.java.bakf:\Java\practice\File\FileDemo2.classf:\Java\practice\File\FileDemo2.javaf:\Java\practice\File\FileDemo2.java.bakf:\Java\practice\File\haha.txtf:\Java\practice\File\hehe.txtf:\Java\practice\File\hh*/
==============================================================================================================================
文件的筛选:
在上面的学习中,可以把一个文件夹中的所有文件都输出,但是,如果只想输出其中一种文件该怎么做呢,比如我只想要java文件
这时,就要用到筛选器:
1,String[] list(FilenameFilter filter)
2,File[] listFiles(FilenameFilter filter)
不难看出,所谓的筛选器,就是FilenameFilter对象,而FilenameFilter是一个接口,因此,我们需要先建立一个类去实现该接口,然后在建立对象传入到函数中,这种形式类似于集合中的比较器的使用
代码演示:
文件夹:
代码:
import java.io.*;class MyFilter implements FilenameFilter{public boolean accept(File dir,String name){return name.endsWith(".java");//根据后缀是否为java来筛选}}class FilenameFilterDemo {public static void main(String[] args) {File dir=new File("F:\\Java\\practice\\File");File[] farr=dir.listFiles(new MyFilter());//传入筛选器for(File s:farr){System.out.println(s.getAbsolutePath());}}}/*结果:F:\Java\practice\File\FileDemo1.javaF:\Java\practice\File\FileDemo2.javaF:\Java\practice\File\FilenameFilterDemo.java*/
- File类的学习
- File类的学习
- File类的学习
- 关于File类的学习
- File及其他类的学习
- 黑马程序员: File类、递归的学习
- 关于java中,File类的学习
- java中File类的相关学习
- Java.io.File类的学习
- IO流的学习—File类
- 对于file的学习。
- File类的学习和RandomAccessFile的学习
- File类学习
- 学习笔记File类
- java File类与FilenameFilter类的学习
- Java IO学习札记(File类的使用)
- 黑马程序员__关于学习File类的总结
- java学习笔记-File类的基本使用
- 后台服务器CPU使用率高 问题分析方法
- Java线程:线程的调度-休眠
- LaTeX-02 文档基本结构、编译、特殊符号输出
- HTML5网页设计初窥系列课程
- Linux内核态和用户态的区别
- File类的学习
- UVa #1152 4 Values whose Sum is 0 (例题8-3)
- Android 如何获取 umeng 的 渠道信息
- CUDA, 软件抽象的幻影背后 之三
- 微信公众平台微信支付打通流程
- 如何判断4张牌是否可以算出24点
- Linux patches
- ldd3笔记_加载模块方法_模块程序组成
- 二叉树的算法