File类

File类 

 File - 九五二七 - 今天

用于将文件或者文件夹封装成对象         方便对文件与文件夹的属性信息进行操作    File对象可以作为参数传递给流的构造函数  

 

File类的出现弥补(mibu)流对象的不足       

流对象只能操作文件的数据               

但是不能操作文件的属性,以及文件夹。  

创建File对象

1.      File f = new File(“a.txt”);

//将a.txt封装成File对象。

a.txt有可能不存在,故File可以将已有或者未有的文件和文件夹封装成对象

2.  File f = new File(“D:\\demo”,”a.txt”);

         将Ddemo文件夹中的a.txt文件封装成File对象

3.      File d = new File(“D:\\demo”);

 File f = new File(d,“a.txt”);

类似第二种方法,现将文件路径封装成File对象后,再将a.txt与其封装在一个对象中。

          \\符号Linux下不识别,不能很好的跨平台,这时可使用separator

File f = new File(“D:\\demo”,”a.txt”)

可改写成:  File f = new File(“D:”+File.separator+”demo”+File.separator+”a.txt”);   

File类常见方法:

创建:

 在指定位置创建文件,如果该文件已经存在,则不创建,返回false和输出流不一样,输出流对象一建立创建文件。而且文件已经存在,会覆盖。

File - 九五二七 - 今天

createNewFile()是在硬盘上创建文件,即调用了底层资源,这就可能发生异常。

File - 九五二七 - 今天

 创建文件夹:2中方法能创建多级文件夹

File - 九五二七 - 今天

 File - 九五二七 - 今天

 1.     删除

File - 九五二七 - 今天

 1中的delete(),若一无待删除文件,返回false

若程序有错误,有的 时候不能执行到delete,如果一定要删除可以用finally,但是被删文件正被使用,也删除不了。

这时可使用2deleteOnExit()方法。就是在虚拟机结束前,使用的文件也被释放,然后删除。此方法一般用于处理临时文件

1.     判断

可以判断封装的对象是文件还是文件夹[不要单纯的看名字,也有a.txt名的文件夹]

记住在判断是否是文件或目的时,须先通过exists判断是否存在。[因若不存在会返回FALSE]

File - 九五二七 - 今天

 File - 九五二七 - 今天

 File - 九五二七 - 今天

 获取

getAbsolutePath()返回绝对路径  返回类型String

getAbsoluteFile()也返回绝对路径,并把该路径封装成对象 返回类型File

二者可以转换。String可以new一下变成FileFile也可以toString

getPath()返回的结果和封装时的路径一致。若封装为相对路径,返回就相对,若绝对,返回绝对。而getAbsolutePath()就是返回绝对路径

注意File指定的文件可以不再硬盘上。只要指定路径。就能getpath。类似于。

getParent()

该方法返回的是绝对路径中的父目录。如果获取的是相对路径,返回null

  如果相对路径中有上一层目录那么该目录就是返回结果

File f = new File(“a.txt”);  f.getParent();     null

File f = new File(“d:\\demo\\a.txt”);  f.getParent();  d:\demo[显示是为一个”\”]

File f = new File(“demo\\a.txt”);  f.getParent();     demo

 

lastModified()表示文件最后一次被修改过的时间

length()返回指定文件的长度                        二者返回都为long类型

较特殊:renameTo()  就是原文件改名之后,被“新名字”的文件替换,内容不变。从而达到从命名的作用。

若把c盘中a.txt renamedb.txt。则会自动把c盘的删除掉

      modify:被修改,修改[mad fai]

File对象功能文件列表

File[] a = File.listRoots();  listRoots()方法。返回值问File类型的数组

list()方法:打印指定目录下所有文件及文件夹的名称(包含隐藏文件)

调用list方法的File封装的为目录。若是文件,返回值为空。

File f = new File(“c:\\windows”);

String[] names = f.list();

for(String name : names)

{

           System.out.println(name);
}

list()的过滤

File - 九五二七 - 今天

list()与listFiles()区别:list()返回值类型为String的数组,只是文件的名字

listFile()返回值类型为File的数组,文件的属性信息全部在其中,可以通过getNamelength等方法获得信息。


列出目录下所有内容-递归

类似windows中的的高级搜索,查找包含子目录

       File - 九五二七 - 今天

 递归法就二进制

File - 九五二七 - 今天

 File - 九五二七 - 今天




 本质递归无他。就再创建一个toBin方法,然后该方法与本方法一样就直接使用。

 递归要注意

    1限定条件:不能无限递归下去

           2注意递归次数。每递归一次就创建一次方法,如果次数足够多,会内存溢出

层次清晰的list()

                                         File - 九五二七 - 今天


09删除带内容的目录

删除原理:

window中,删除目录从里面往外删除的。

既然是从里往外删除。就需要用到递归。

注意:若是返回FALSE一般是把一个文件重复删除两次

java删除不走回收站

C盘删不了,1,隐藏目录java无法访问,就不能删除。返回File[]数据为空,就会空指针异常,还有一些文件没有后缀名,与目录相互混淆。

故遍历的时在判断isDirectory前,要判断是否isHidden().文件可以删除,文件夹不能,只有空目录才能删除


创建java文件列表

java文件及对应路径封装到一个文件中,易于查找

(类似自己创建一个播放列表。下回听歌直接听列表里的不用再上总文件中查找)

 思路:

1,对指定的目录进行递归。

2,获取递归过程所以的java文件的路径。

3,将这些路径存储到集合中。

4,将集合中的数据写入到一个文件中。


  Properties

Properties是hashtable的子类。

也就是说它具备map集合的特点。而且它里面存储的键值对都是字符串。

是集合和IO技术相结合的集合容器。

该对象的特点:可以用于键值对形式的配置文件

(打开软件,在内存开辟空间,可以自己调软件配置,字体颜色,大小。软件一关,内存释放,但是再次打开,配置不变)

把配置信息进行持久化存储,每次打开软件,都会加载配置文件

那么在加载数据时,需要数据有固定格式:键=

Day20-13:

//演示,如何将流中的数据存储到集合中。

//想要将info.txt中键值数据存到集合中进行操作。

思路:

           1,用一个流和info.txt文件关联。

           2,读取一行数据,将该行数据用"="进行切割。

           3,等号左边作为键,右边作为值。存入到Properties集合中即可。

File - 九五二七 - 今天
用于记录应用程序运行次数。

如果使用次数已到,那么给出注册提示。

很容易想到的是:计数器。

可是该计数器定义在程序中,随着程序的运行而在内存中存在,并进行自增。

可是随着该应用程序的退出,该计数器也在内存中消失了。

下一次在启动该程序,又重新开始从0计数。

这样不是我们想要的。

程序即使结束,该计数器的值也存在。

下次程序启动在会先加载该计数器的值并加1后在重新存储起来。

所以要建立一个配置文件。用于记录该软件的使用次数。

该配置文件使用键值对的形式。

这样便于阅读数据,并操作数据。

键值对数据是map集合。

数据是以文件形式存储,使用io技术。

那么map+io -->properties.

配置文件可以实现应用程序数据的共享

Day20-14:Properties练习

用于记录应用程序运行次数。

如果使用次数已到,那么给出注册提示。(付费软件前期的免费使用次数)

File - 九五二七 - 今天

 

File - 九五二七 - 今天

配置文件:要不是Properties形式要不就是XML形式

dom4j==dom for java

      牛人为xml开发的工具 

PrintWriter(打印流)

 一对:PrintWriter字符打印流 PrintStream字节打印流

       打印流:该流提供打印方法,可以将各种数据类型的数据都原样打印。

                                    File - 九五二七 - 今天

 

     File - 九五二七 - 今天

 合并流

File - 九五二七 - 今天

 Sequence:

Vector中有Enumeration.Enumeration中有方法elements()

17切割文件

 一般文件太大,只能添加多个附件。日常用WinRAR分卷压缩,java也有方法切割文件

 原理:一个源,多个目的输出。系统没有提供的方法

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值