黑马程序员——File类



------- android培训java培训、期待与您交流! ----------




File

 


用来将文件或文件夹封装成对象。

方便对文件与文件夹的属性信息进行操作。

File对象可以作为参数传递给流的构造函数。 


File类的常见方法:

1、创建。

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

boolean mkdir():创建文件夹。

boolean mkdirs();创建多级文件夹。


2、删除。

boolean delete():删除失败返回flase

void deleteOnExit():在程序退出时删除指定文件。


3、判断。

boolean exists():文件是否存在。

boolean canExcute();文件是否可执行。

boolean isDirectory():是否是文件夹。

boolean isFile():是否是文件。

boolean isHidden():判断是否隐藏。

boolean isAbsolute():是否是绝对路径。文件不存在也可以判断。


记住:在判断文件对象是否是文件夹或者目的时,必须要判断该文件对象封装的内容是否存在。通过exists判断。


4、获取信息。

getName():获取名称。

getPath():获取目录。

getParent():返回的是绝对路径中的父目录。如果获取的是相对路径,返回Null。如果相对路径有上一层目录那么该目录就是返回结果。

getAbsolutePath():获取绝对路径。

long lastModified():获取文件最后一次修改的时间。

long length():获取文件的长度。

boolean renameTo():重命名此抽象路径名表示的文件。


5、目录列表。

      File[] listRoots():列出机器里面有效的盘符。

      list():打印指定目录的文件及文件夹名称。调用list方法的file对象必须是封装了一个目录。该目录还必须存在。


例:列出指定目录下文件或者文件夹,包含子目录中的内容。

也就是列出指定目录下所有内容。

因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可。

在列出过程中出现的还是目录的话,还可以再次调用功能。

也就是函数自身调用自身。

这种表现形式,或者编程手法,称为递归。


递归要注意:

1、限定条件。

2、要注意递归的次数。尽量避免内存溢出。


递归算法列出指定目录下文件或者文件夹

public static String getLevel(int level)

                  {

                     StringBuildersb = new StringBuilder();

                     sb.append("|--");

                     for(intx=0;x<level;x++)

                     {

                            sb.insert(0,"  ");

                     }

                     returnsb.toString();

                  }

                  publicstatic void showDir(File dir,int level)

                  {

                     System.out.println(getLevel(level)+dir.getName());

                     level++;

                     File[]files = dir.listFiles();

                     for(intx=0;x<files.length;x++)

                     {

                            if(files[x].isDirectory())

                                   showDir(files[x],level);

                            else

                                   System.out.println(getLevel(level)+files[x]);

                     }

                  } 


练习:

将一个指定目录下的Java文件的绝对路径,存储到一个文本文件中。

建立一个java文件列表文件。


思路:

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

2、获取递归过程所有的java文件的路径。

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

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

创建Java文件列表。

import java.io.*;

import java.util.*;

class JavaFileList

{

                  publicstatic void main(String[] args) throws IOException

                  {

                     Filedir = new File("E:\\EditPlus");

                     List<File>list = new ArrayList<File>();

                     fileToList(dir,list);

                     Filefile = new File(dir,"javalist.txt");

                     writeToFile(list,file.toString());

                  }

                  publicstatic void fileToList(File dir,List<File> list)

                  {

                     File[]files = dir.listFiles();

                     for(Filefile : files)

                     {

                            if(file.isDirectory())

                                   fileToList(file,list);

                            else

                            {

                                   if(file.getName().endsWith(".java"))//判断是否为.java文件。

                                          list.add(file);

                            }

                     }

                  }

                  publicstatic void writeToFile(List<File> list,String javaListFile) throwsIOException

                  {

                     BufferedWriterbufw = null;

                     try

                     {

                            bufw= new BufferedWriter(new FileWriter(javaListFile));

                            for(Filef : list)

                            {

                                   Stringpath = f.getAbsolutePath();

                                   bufw.write(path);

                                   bufw.newLine();

                                   bufw.flush();

                            }

                     }

                     catch(IOException e)

                     {

                            throwe;

                     }

                     finally

                     {

                            try

                            {

                                   if(bufw!=null)

                                          bufw.close();

                            }

                            catch(IOException e)

                            {

                                   throwe;

                            }

                     }

                  }

}


 Properties


Propertieshashtable的子类。

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

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

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

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


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

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

思路:

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

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

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

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

这样不是我们想要的。

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

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

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

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

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

键值对数据是map集合。

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

那么mapio ——>Properties

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

import java.io.*;

import java.util.*;

class RunCount

{

                  publicstatic void main(String[] args) throws IOException

                  {

                     Propertiesprop = new Properties();

                     Filefile = new File("count.ini");

                     if(!file.exists())//判断文件是否存在,不存在新建

                            file.createNewFile();        

                     FileInputStreamfis = new FileInputStream(file);

                     prop.load(fis);//把数据加载到集合中

                     intcount = 0;

                     Stringvalue = prop.getProperty("time");//第一次获取为空

                     if(value!= null)

                     {

                            count= Integer.parseInt(value);

                            if(count>= 5)

                            {

                                   System.out.println("次数已到!");

                                   return;

                            }

                     }            

                     count++;

                     prop.setProperty("time",count+"");             

                     FileOutputStreamfos = new FileOutputStream(file);

                     prop.store(fos,"");            

                     fis.close();

                     fos.close();

                  }

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值