黑马程序员------Java中File类学习总结

Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流!

File类

  1、用来将文件或者文件夹封装成对象,以方便对文件和文件夹进行操作。

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

File对象功能:

  创建和删除:

  1、boolean createNewFile(): 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。

  2、boolean mkdir():创建此抽象路径名指定的目录。

  3、boolean mkdirs():创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。

  4、boolean delete():删除此抽象路径名表示的文件或目录。

  5、boolean deleteOnExit():在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。

示例代码:

import java.io.File;
import java.io.IOException;
public class Test{
  public static void main(String...args) throws Exception {
    File f = new File("C:\\文件夹\\1.Java");
    File f1 = new File("C:\\文件夹");      File f2 = new File("C:"+File.separator+"1.java");//separator与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。

    //创建一个目录。
    f1.mkdir(); 

    //创建一个文件夹,如果传入文件名中还有文件夹,会自动创建根文件夹和子文件夹。
    f.mkdirs(); 

    /*
    调用文件的创建方法,如果该文件的目录不存在,那么将报异常,
    如果该文件存在的话,就不创建文件,如果不存在就创建该文件。
     */
    f.createNewFile();
    
    //休息4秒种
    Thread.sleep(4000);
   
    //创建了一个文件,如果虚拟机退出,那么该文件将自动删除。
    f.deleteOnExit();
  }
  public static void sop(Object obj){
    System.out.println(obj);
  }
}

  判断:

  1、boolean exists():测试此抽象路径名表示的文件或目录是否存在。

  2、boolean isAbsolute():测试此抽象路径名是否为绝对路径名。

  3、boolean isDirectory():测试此抽象路径名表示的文件是否是一个目录。

  4、boolean isFile():测试此抽象路径名表示的文件是否是一个标准文件。

  5、boolean isHidden():测试此抽象路径名指定的文件是否是一个隐藏文件。

示例代码:

import java.io.File;
import java.io.IOException;
public class Test{
  public static void main(String...args)throws IOException{
    File f = new File("C:\\1.Java");
    //是否是可执行文件
    sop(f.canExecute()); 

    //文件是否存在
    sop(f.exists()); 

    //是否是一个文件
    sop(f.isFile()); 

    //是否是一个目录
    sop(f.isDirectory());
    //是否是隐藏文件
    sop(f.isHidden());
  }
  public static void sop(Object obj){
    System.out.println(obj);
  }
} 

  获取:

  1、File getAbsoluteFile():返回此抽象路径名的绝对路径名形式。

  2、String getAbsolutePath():返回此抽象路径名的绝对路径名字符串。

  3、File getCanonicalFile():返回此抽象路径名的规范形式。

  4、String getCanonicalPath():返回此抽象路径名的规范路径名字符串。

  5、long getFreeSpace():返回此抽象路径名指定的分区中未分配的字节数

  6、String getName():返回由此抽象路径名表示的文件或目录的名称。

  7、String getParent():返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null

  8、File getParentFile():返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null

  9、String getPath():将此抽象路径名转换为一个路径名字符串。

  10、boolean renameTo(File dest):重新命名此抽象路径名表示的文件。

  11、static File[]  listRoots():列出可用的文件系统根。

  12、String[] list():返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。

代码示例:

import java.io.File;
public classTest{
  public static void main(String...args){
    File[] file = File.listRoots();
    for(File f : file){
       System.out.println(f);
    }
    File f = new File("G:\\");
    String[] name = f.list();
    for(String fileName : name){
      System.out.println(fileName);
    }
  }
} 

应用实例1:

  需求:列出一个目录下的所有内容的代码:

/*
列出指定目录下文件或者文件夹,包含子目录中的内容。
也就是列出指定目录下所有内容
因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可。
在列出过程中出现还是目录的话,还可以在此调用本功能
也就是函数自身调用自身,
这种表现形式,或者编程手法,成为递归 

递归要注意:
1、限制条件
2、要注意递归次数,避免内存溢出
*/
import java.io.File;
public class Test{
  public static void main(String...args){
    File dir = new File("D:\\Demo");
    dir(dir,0);
  }
  //求文件层级的函数
  public static String getLevel(int level){
    StringBuilder sb = new StringBuilder();
    for(int x=0;x<level;x++){
      sb.append("  ");
    }
    return sb.toString();
  }
  //列出目录下所有内容的函数
  public static void dir(File dir,int level){
    sop(getLevel(level)+dir);
    level++;
    File[] files = dir.listFiles();
    for(Filefile:files){
    if(!file.isHidden()){
      if(file.isDirectory())
        dir(file,level);
      else
        sop(getLevel(level+1)+file);
      }
    }
  }
  public static void sop(Object obj){
    System.out.println(obj);
  }
} 

应用示例2:

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

/*
练习
将一个指定目录下的java文件的绝对路径,存储到一个文本文件中。
建立一个java文件列表文件。
思路:
1,对指定的目录进行递归。
2,获取递归过程所以的java文件的路径。
3,将这些路径存储到集合中。
4,将集合中的数据写入到一个文件中。
*/
import java.io.*;
import java.util.*;
class  JavaFileList
{
    public static void main(String[] args) throws IOException
    {
        File dir = new File("d:\\java1223");
        List<File> list = new ArrayList<File>();
        fileToList(dir,list);
        //System.out.println(list.size());

        File file = new File(dir,"javalist.txt");
        writeToFile(list,file.toString());
    }
    public static void fileToList(File dir,List<File> list)
    {
        File[] files = dir.listFiles();
        for(File file : files)
        {
            if(file.isDirectory())
                fileToList(file,list);
            else
            {
                if(file.getName().endsWith(".java"))
                    list.add(file);
            }
        }
    }

    public static void writeToFile(List<File> list,String javaListFile)throws IOException
    {
        BufferedWriter bufw =  null;
        try
        {
            bufw = new BufferedWriter(new FileWriter(javaListFile));

            for(File f : list)
            {
                String path = f.getAbsolutePath();
                bufw.write(path);
                bufw.newLine();
                bufw.flush();
            }

        }
        catch (IOException e)
        {
            throw e;
        }
        finally
        {
            try
            {
                if(bufw!=null)
                    bufw.close();
            }
            catch (IOException e)
            {
                throw e;
            }
        }
    }
}

总结:File中注意:

1、File.speparator的作用是判断在不同的系统中斜杠的方向

    在windows中斜杠的方向是向右斜的\\
    在Linux  中斜杠的方向是向左斜的//

2、delete()方法可以删除一个文件或者一个整个文件夹(整个目录),返回结果是布尔类型。

    不论是创建文件、创建目录还是删除文件,只有在动作真正发生的时候会返回true。

 

时间: 2024-10-07 05:27:30

黑马程序员------Java中File类学习总结的相关文章

黑马程序员------Java中IO流学习总结

Java培训.Android培训.iOS培训..Net培训.期待您的交流 一.概念 流:流就是字节序列的抽象概念,能被连续读取数据的数据源和能被连续写入数据的接收端就是流 IO流:用于处理设备上的数据 常用设备:硬盘.内存.键盘录入等 IO流的分类: 1.根据处理的数据类型不同,可分为字节流和字符流. 字符流的由来:因为文件编码的不同,而有了对字符高效操作的字符流对象,原理是基于字节流读取字节时,去查了相关码表. 字符流和字节流的区别: **字节流读取时,读到一个字节就返回一个字节:而字符流是字

黑马程序员——Java集合工具类和泛型

Collections工具类和泛型 Collections和Collection Collections和Collection是不同的,Collections是工具类,用来操作集合的,而Collection是集合接口.Collections中有一系列的静态方法用来操作集合,但是不能更改集合内容.比如不能set()不能remove()元素,可以替换全部元素或者添加同一个元素. static List<String> list =Arrays .asList("one Two three

黑马程序员------Java中多线程学习总结(一)

Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! 一.多线程的概念 进程:是一种“自包容”的运行程序,有自己的地址空间. 基于进程的特点是允许计算机同时运行两个或更多的程序 线程:是进程内部单一的一个顺序控制流 . 基于线程的多任务处理环境中,线程是最小的处理单位. 在Java中,一个应用程序可以包含多个线程.每个线程执行特定的任务,并可与其他线程并发执行.多线程使系统的空转时间减少,提高了CPU的利用率.多线程编程隐藏了CPU在任务之间切换的事实. 二.创建

黑马程序员------Java中GUI(图形用户界面)学习总结

Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! GUI: Graphical User Interface(图形用户接口). 即用图形的方式,来显示计算机操作的界面,以方便用户更容易更直观地操作. Java中为GUI提供的对象都在Java.Awt和Javax.Swing两个包中. java.Awt: Abstract Window ToolKit (抽象窗口工具包). 需要调用本地系统方法实现功能,属于重量级控件. javax.Swing: 在AWT的基础上

黑马程序员-java中的反射总结

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- Java 反射总结 类装载器工作机制 类装载器就是寻找类的节码文件并构造出类在JVM 内部表示对象的组件.在Java 中, 类装载器把一个类装入JVM 中,要经过以下步骤: 1.装载:查找和导入Class 文件: 通过一个类的全限定名来获

黑马程序员——24,File类,Properties类,

------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- /* File类的应用: 针对文件或者文件夹封装成对象进行操作. */ import java.io.*; class Ioliou16 { publicstatic void main(String[] args) { File f1=n

黑马程序员------Java中jdk1.5新特性

Java培训.Android培训.iOS培训..Net培训.期待与您交流! JDK1.5新特性: 为什么会出现新特性: 新的技术出现是为了解决老的问题,Java语言为了提高开发者的开发效率,对之前的某些不利于提高效率的技术进行改进. 静态导入: 静态导入:可以导入某个类下的静态方法,静态导入后,可以不写类名而直接使用此类下的静态方法. 语法:import static 包名.类名.静态方法 代码示例: package com.itheima.day1; /** * 静态导入 * @author

黑马程序员————java中的网络编程

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- java中的网络编程 一.网络编程概述:基于互联网的编程 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换. 二.网络模型:OSI和TCP/IP 1.OSI(Open System Interconnection开放系统互连

黑马程序员----Java高新技术之反射学习总结

------- android培训.java培训.期待与您交流! ---------- 反射的概念. 1.Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. 精妙的总结就是:反射就是将Java类中的各个成分映射成相应的Java类. 3.在Java中,描述事物的各种类同样也是一种事物,也可以用面向对象的方法来描述,即也有一个类来描述众多的J