File类、递归

1.1File类概述

java.io.File表示文件和目录路径名的抽象类。可以对文件和文件夹进行创建删除、获取、判断、遍历等功能。

1.2路径\文件分割符,相对路径绝度路径

1.2.1路径\文件分割符

* 在编程的过程中,最好不要写死
* windows: 文件分隔符\(编程中要用转义字符"\\") 路径分隔符;
* linux: 文件分隔符/ 路径分隔符:


    public static void main(String[] args) {

        //源码中:public static final String separator = "" + separatorChar;
//文件分隔符
String separator = File.separator;
System.out.println("separator = " + separator); //源码中:public static final String pathSeparator = "" + pathSeparatorChar;
//路径分隔符
String pathSeparator = File.pathSeparator;
System.out.println("pathSeparator = " + pathSeparator); //执行结果:
//separator = \
//pathSeparator = ; }

  

 1.2.1绝对路径和相对路径

*  绝度路径:从盘符开始的路径,是完成的路径。
*
* 相对路径:化简的路径,以当前项目根目录作为参考,开发中经常使用
* D:\JavaSE\demo02File.txt D:\JavaSE\项目根目录 demo02File.txt相对路径
*
* windows下:文件和目录路径是不区分大小写!!!


    /**
* 路径知识点
*/
private static void show01() {
File file = new File("demo02File.txt");
System.out.println(file.getAbsoluteFile()); File file02 = new File("D:\\demo02File.txt");
System.out.println(file02.getAbsoluteFile()); //结果:
// D:\JavaSE\demo02File.txt
//D:\demo02File.txt
}

1.3File类的构造方法

*  java.io.File类是文件和目录路径的抽象表示,可以对文件和目录路径进行
* 获取、判断、创建删除、遍历等操作
*
* File对象表示硬盘上真是存在的一个文件或者目录路径名!!!
* 该目录下是否存在文件或者文件夹,不影响File对象的创建!!!
*
* 构造方法:
* 构造方法一:通过文件或目录路径名字符串创建File对象
* public File(String pathname);
* String pathname:字符串的路径名称
* 路径可以是以文件结尾/文件夹结尾,相对路径/绝对路径,存在/不存在
*
* 创建File对象,只是把字符串路径封装为File对象,不考虑路径的真假情况!!!
*
* 构造方法二:通过父路径名 和 子路径名 创建File对象
* public File(String parent,String child);
*
* 构造方法三:通过抽象父路径和子路径名创建创建File对象
* public File(File parent, String child);
    /**
* 构造方法
*/
private static void show02() {
//构造方法一:通过文件或目录路径名字符串创建File对象
File file = new File("demo03File.txt");
System.out.println(file); //构造方法二:通过父路径名 和 子路径名 创建File对象
File file02 = new File("D:\\b","demo03File02.txt");
System.out.println(file02); //D:\\bbb是不存在的文件夹,但是不影响File对象的创建。
File file03 = new File("D:\\bbb","demo03File02.txt");
System.out.println(file03); //构造方法三:通过抽象父路径和子路径名创建创建File对象
File parentPath = new File("D:\\");
File file04 = new File(parentPath, "demo04File02.txt2");
System.out.println(file04);
}

1.4File类的获取功能

* File类的获取功能
*
* public String getAbsolutePath();
*
* public String getPath();
* File类重写了toString(),源码如下:
* public String toString() {
* return getPath();
* }
*
* public String getName();
*
* public long length();
* 获取文件的字节长度,文件夹是没有长度的,返回的0!!
    public static void main(String[] args) {
File file = new File("D:\\JavaSE\\demo04File.txt"); //获取文件或目录路径名的绝对路径
File absoluteFile = file.getAbsoluteFile();
System.out.println("absoluteFile = " + absoluteFile); //获取构造方法中参数对应的字符串
String path = file.getPath();
System.out.println("path = " + path);
System.out.println("file = " + file); //获取路径结尾的文件名或者文件夹
String name = file.getName();
System.out.println("name = " + name); //获取文件的字节长度,文件夹是没有长度的,返回的0!!!
long length = file.length();
System.out.println("length = " + length); // result:
// absoluteFile = D:\JavaSE\demo04File.txt
// path = D:\JavaSE\demo04File.txt
// file = D:\JavaSE\demo04File.txt File类重写了toString方法,里面调用了getPath()!!!
// name = demo04File.txt
// length = 12 utf-8中一个汉字三个字节!!!
}

1.5File类的判断功能

* File类的判断功能:
*
* public boolean isExists(); File对象表示的文件或者文件夹是否存在
* public boolean isFile(); File对象是文件吗
* public boolean isDirectory(); File对象是文件夹吗
*
* windows中只有文件和文件夹,isFile和sDirectory互斥!!!
* 前提是先判断file是否存在,才有必要在判断是文件还是文件夹!!!
        File file = new File("demo04File.txt");
//windows中只有文件和文件夹,isFile和sDirectory互斥
//前提是先判断file是否存在,才有必要在判断是文件还是文件夹
if (file.exists()){
System.out.println(file.getName()+"(file or not):"+file.isFile());
System.out.println(file.getName()+"(directory or not):"+file.isDirectory());
} File file02 = new File("D:\\JavaSE");
if (file02.exists()){
System.out.println(file02.getName()+"(file or not):"+file02.isFile());
System.out.println(file02.getName()+"(directory or not):"+file02.isDirectory());
}

1.6File类的创建删除功能

* File对象的创建和删除功能:
* public boolean createNewFile();
* 只能创建文件,并且当且仅当文件不存在的时候,创建一个新的文件,返回true,否则返回false
* 需要自己处理异常,file对象表示的目录路径不存在时,抛出异常!!!java.io.IOException
*
* public boolean mkdir();
* 创建单个文件夹,成功返回true,失败返回false(文件夹存在的时候,或者路径不存在)
*
* public boolean mkdirs();
* 创建多级目录,成功返回true,失败返回false(文件夹存在时)
    /**
* 删除
*/
private static void show03() {
File file = new File("D:\\Hello.txt");
System.out.println(file.delete()); //true 删除成功 File file1 = new File("D:\\love");
System.out.println(file1.delete()); //删除失败,只有文件夹是空的,才能删除成功
//构造方法的路径不存在,也会返回false
} /**
* 创建文件夹
* 文件夹存在时候,不会再次创建返回false
* 对于
* mkdir:参数路径不存在,创建会失败,返回false
*
* 其他情况,都能创建文件夹成功,返回true
*/
private static void show02() {
File file = new File("D:\\Hello");
//创建单个文件夹
System.out.println(file.mkdir()); File file1 = new File("D:\\love\\tomorrow");
//创建多个文件夹
System.out.println(file1.mkdirs()); //mkdir,mkdirs只能创建文件夹,并且mkirs也可以创建单个文件夹
File file2 = new File("D:\\Hello.txt");
System.out.println(file2.mkdirs());
} /**
* 文件的创建
* @throws IOException
*/
private static void show01() throws IOException { File file = new File("demo05File.txt");
boolean newFile = file.createNewFile(); //第一次运行,没有文件,创建后返回true.第二次运行有文件,不创建,返回false
System.out.println("newFile create ok ? " + newFile); File directoryNoNoNo = new File("iamDirectoryNoNoNo");
if(!directoryNoNoNo.exists()){
directoryNoNoNo.createNewFile();
}
System.out.println("我仍然是一个文件哦"+directoryNoNoNo.getName()); // File file = new File("D:\\tt\\demo05File.txt"); //路径不存在,抛出java.io.IOException
// boolean newFile = file.createNewFile(); //编译时异常,需要自己处理
}

  

1.7文件夹的遍历

* File类的遍历目录(文件夹)功能
* public String[] list();
* public File[] listFiles();
*
* 返回目录路径下的所有子文件和文件夹,
* 第一个方法返回的是子文件和文件夹的字符串,封装在String[]数组中
* 第二个方法返回的是子文件和文件夹的File对象,封装在File[]数组中
*
* 如果构造方法中的目录路径不存在,或者是一个文件,那么出现空指针异常
    public static void main(String[] args) {
// D:\JavaSE\ 08FileAndRecursion
//File file = new File("D:\\JavaSE\\notExists"); //java.lang.NullPointerException
File file = new File("D:\\JavaSE\\"); //打印项目目录内容
String[] list = file.list(); for (String str :
list) {
System.out.println(str);
} System.out.println("------------------------"); File[] files = file.listFiles();
for (File dirFile: files ) {
System.out.println(dirFile.getName());
} }

  

File类、递归的更多相关文章

  1. day23<File类递归练习>

    File类递归练习(统计该文件夹大小) File类递归练习(删除该文件夹) File类递归练习(拷贝) File类递归练习(按层级打印) 递归练习(斐波那契数列) 递归练习(1000的阶乘所有零和尾部 ...

  2. 黑马程序员-File类+递归的简单应用

    Java File类   Java.io.File Java文件类以抽象的方式代表文件名和目录路径名.该类主要用于文件和目录的创建.文件的查找和文件的删除等. File对象代表磁盘中实际存在的文件和目 ...

  3. File类&递归

    File类1.什么是file类Java中处理操作系统文件的类.2.file思想创建一个File对象,代表了操作系统的具体的一个文件(文件,文件夹)然后通过这个File对象就可以操作该文件:删除该文件, ...

  4. IO流(File类--递归--过滤器--IO字节流--IO字符流--Properties集合--缓冲流--转换流--序列化流--打印流)

    一.File类 1.1概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 1.1.1相对路径与绝对路径 相对路径从盘符开始的路径,这是一个完整 ...

  5. 使用File类递归列出E盘下全部文件

    import java.io.File;public class FileListTest { public void tree(File file){ if(file.listFiles()!=nu ...

  6. Java——使用File类递归遍历指定路劲下的所有文件

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  7. Java中如何利用File类递归的遍历指定目录中的所有文件和文件夹

    package cuiyuee; import java.io.File; import java.util.ArrayList; import java.util.List; public clas ...

  8. File类 递归 获取目录下所有文件文件夹

    package com.xiwi; import java.io.*; import java.util.*; class file{ public static void main(String a ...

  9. 01 语言基础+高级:1-8 File类与IO流_day08【 File类、递归】

    day08[File类.递归] 主要内容 File类 递归 教学目标 能够说出File对象的创建方式 能够说出File类获取名称的方法名称 能够说出File类获取绝对路径的方法名称 能够说出File类 ...

  10. 异常、Throwable、finally、File类(十九)

    1.异常的概述和分类 * A:异常的概述 * 异常就是Java程序在运行过程中出现的错误.* B:异常的分类 * 通过API查看Throwable * Error * 服务器宕机,数据库崩溃等 * E ...

随机推荐

  1. Cookie是以文本文件保存在客户端的,所以说cookie对象从本质而言是 字符串,所以取值时用字符串,或其数组

  2. JavaWEB - JSP 指令

  3. FFMPEG基于内存的转码实例——输入输出视频均在内存

    我在6月份写了篇文章<FFMPEG基于内存的转码实例>,讲如何把视频转码后放到内存,然后通过网络发送出去.但该文章只完成了一半,即输入的数据依然是从磁盘文件中读取.在实际应用中,有很多数据 ...

  4. SHOI2016 随机序列

    给你一个数列,在相邻两个数之间插入加号,减号或乘号 每次支持单点修改,求所有这样可以得到的表达式之和,膜1e9 + 7 sol: 我是个 sb ... 可以发现,如果某位置出现了加号,后面一定有一个减 ...

  5. px-rem自适应转换(进阶@rem:40rem; )

    接力之前的文章 https://www.cnblogs.com/leshao/p/5674710.html 这篇文章讲解的是px -rem 单位换算 除100的  写法 比如实际测量PSD宽度是500 ...

  6. windows服务和进程的区别和联系

    Windows Service 是主要用于服务器环境而长期运行的应用程序, 这类程序不需要有用户界面或者任何模拟输出. 任何的用户消息通常都是记录在Windows 事件日志里.Windows Serv ...

  7. 文件异步上传,多文件上传插件uploadify

    本文中使用java作为例子 uploadify下载 http://files.cnblogs.com/chyg/uploadify.zip jsp页面中需要引入: <script type=&q ...

  8. 安装mariadb并修改配置文件

    实验环境:CentOS7 #安装mariadb-server包#修改mariadb配置文件/etc/my.cnf.d/server.cnf#添加 skip_name_resolve=ON #不执行将I ...

  9. java基础知识(7)---多态

    多 态:(面向对象特征之一):函数本身就具备多态性,某一种事物有不同的具体的体现.体现:父类引用或者接口的引用指向了自己的子类对象.//Animal a = new Cat();多态的好处:提高了程序 ...

  10. WPF Invoke与BeginInvoke的区别

    Control.Invoke 方法 (Delegate) :在拥有此控件的基础窗口句柄的线程上执行指定的委托. Control.BeginInvoke 方法 (Delegate) :在创建控件的基础句 ...