一、File类构造方法
3种常见构造方法
- 1.File(String pathname),(最常用)
- 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
- 2.File(String parent, String child)
- 从父路径名字符串和子路径名字符串创建新的 File实例。
- 3.File(File parent, String child)
- 从父抽象路径名和子路径名字符串创建新的 File实例
1.代码
package Java学习.Java高级.IO.File类.File的3个构造方法;
import java.io.File;
/**
* 一、
* 1.File(String pathname)
* 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
* 2.File(String parent, String child)
* 从父路径名字符串和子路径名字符串创建新的 File实例。
* 3.File(File parent, String child)
* 从父抽象路径名和子路径名字符串创建新的 File实例
* 4. 不常用:File(URI uri)
* 二、File 重写了toString()方法打印路径
*/
public class Main {
public static void main(String[] args) {
System.out.println("-----1.File(String pathname)------");
File file = new File("D:\\Program Files\\JetBrains\\test1\\Lab\\src\\Java学习" +
"\\Java高级\\IO\\File类\\File的3个构造方法");
System.out.println(file);//
System.out.println("----------2.File(String parent, String child)------");
File file1 = new File("D:\\Program Files\\JetBrains\\test1\\Lab\\src\\Java学习",
"\\Java高级\\IO\\File类\\File的3个构造方法");
System.out.println(file1);
System.out.println("--------3.File(File parent, String child)--------");
File parantFile = new File("D:\\Program Files\\JetBrains\\test1\\Lab\\src\\Java学习");
File file2 = new File(parantFile, "\\Java高级\\IO\\File类\\File的3个构造方法");
System.out.println(file2);
System.out.println("父路径parentFile 用对象可以调用File的方法,诸多好处");
System.out.println("最常用的是方法1 简单直接。");
}
}
注意:构造File的时候尽量使用绝对路径,相对路径有相对更目录,如果有包的话用不了,
二、Java 静态字段。静态分割符号
1.这个Linux系统能用到
- 一、2个静态分割符号的字段field
-
- File.pathSeparator 路径分割符号 String 版(windows ; linux : )
- File.pathSeparatorChar 路径分割符 Char 类型
- 2.File.separator 分割符 (windows \ linux /)
- File.separatorChar 分割符Char类型
2 .code
package Java学习.Java高级.IO.File类.File的静态分割符;
import java.io.File;
/**
* 一、2个静态分割符号的字段field
* 1. File.pathSeparator 路径分割符号 String 版(windows ; linux :)
* File.pathSeparatorChar 路径分割符 Char 类型
* 2.File.separator 分割符 (windows \ linux /)
* File.separatorChar 分割符Char类型
*/
public class Main {
public static void main(String[] args) {
System.out.println("File.pathSeparator路径分割符号:windows: "+ File.pathSeparator);
System.out.println("File.Separator 分割符windows: "+File.separator);
}
}
三、File常见方法。
1.获取File信息常用4方法
*一、4个获取功能的方法
-
- file.getAbsolutePath()
- 返回不管file是相对路径还是绝对路径,都返回绝对路径
- 2.getPath()
- 就是普通的打印的toString()方法。
- 3.getName()
- 获取结尾部分,文件或者文件夹
- 4.length()
- 文件的大小,字节,文件夹没有大小(0)。
code
package Java学习.Java高级.IO.File类.File类方法.File类获取功能的方法;
import java.io.File;
/**
*一、4个获取功能的方法
* 1. file.getAbsolutePath()
* 返回不管file是相对路径还是绝对路径,都返回绝对路径
* 2.getPath()
* 就是普通的打印的toString()方法。
* 3.getName()
* 获取结尾部分,文件或者文件夹
* 4.length()
* 文件的大小,字节,文件夹没有大小(0)。
*
*/
public class Main {
public static void main(String[] args) {
System.out.println("--------1.getAbsolutePath(File file)-----");
File file = new File("Main.java");
System.out.println("获取绝对路径: "+file.getAbsolutePath());
System.out.println("-----2.getPath()-----");
System.out.println("获取file对象路径和toString相同: "+file.getPath());
System.out.println("------3.getName()----");
System.out.println("获取对象路径的结尾的名称(文件或者文件夹): "+file.getName());
System.out.println("------4.length()-----");
File file1 = new File(file.getAbsolutePath());
System.out.println("获取文件的大小(字节)(文件夹和不存在的文件为0): "+file1.length());
}
}
2.判断File信息常用3方法。
package Java学习.Java高级.IO.File类.File类方法.File类判断功能方法;
import java.io.File;
/**
* 一、三个判断功能的方法:可用于获取或者操作文件之前的判断
* 1. file.exist() :
* 文件或者目录是否存在,路径不存在false
* 2. file.isDirectory()
* 文件目录是否文件夹结尾 路径不存在false
* 3. file.isFile()
* 文件目录是否文件结尾 路径不存在false
*/
public class Main {
public static void main(String[] args) {
File file = new File("Main.java");
System.out.println("--1. file.exist() :-----");
System.out.println(file.exists());
System.out.println("----2. file.isDirectory()---");
System.out.println(file.isDirectory());
System.out.println("----3. file.isFile() ---");
System.out.println(file.isFile());
}
}
4.操作文件File的常见方法(重要)
4.1创建和删除目录
1.创建和删除目录的4个方法,
- 一、 boolean file.createNewFile()
- 1.文件目录不存在 抛出异常 IOException
- 2.目录下的文件不存在返回false
- 二、boolean delete() 没有走回收站非常危险
- 1.删除该目录下的文件,或者文件目录,只有一层
- 2.成功true
- 三、boolean mkdir() :
- 1.创建目录只能有一层
- 四、mkdirs()
- 1.可创建多层.
2.code
package Java学习.Java高级.IO.File类.File类方法.File操作文件功能方法.创建删除;
import java.io.File;
import java.io.IOException;
/**
* 一、 boolean file.createNewFile()
* 1.文件目录不存在 抛出异常 IOException
* 2.目录下的文件不存在返回false
* 二、boolean delete() 没有走回收站非常危险
* 1.删除该目录下的文件,或者文件目录,只有一层
* 2.成功true
* 三、boolean mkdir() :
* 1.创建目录只能有一层
* 四、mkdirs()
* 1.可创建多层.
*/
public class Main {
private static String url = "D:\\Program Files\\JetBrains\\test1\\Lab\\src\\Java学习" +
"\\Java高级\\IO\\File类\\File类方法\\File操作文件功能方法\\创建删除\\";
public static void main(String[] args) throws IOException {
System.out.println("-------一a.createNewFile()----------");
File a1 = new File(url + "新文件a1.txt");
if(a1.exists()){
a1.delete();
}
System.out.println("a1.createNewFile(): " + a1.createNewFile());
System.out.println("-------二b.delete()----------");
File b1 = new File(url + "新文件b1.txt");
b1.createNewFile();
System.out.println("b1.delete(): " + b1.delete());
System.out.println("-------三c.mkdir()----------");
File c1 = new File(url + "第一层dir");
File c2 = new File(url + "2.1层\\2.2层");
if (c1.exists()) {
c1.delete();
}
if (c2.exists()) {
c2.delete();
}
System.out.println("一层c1: " + c1.mkdir());
System.out.println("同时2层 c2: " + c2.mkdir());
c1.delete();
c2.delete();
System.out.println("-------四d.----------");
File d1 = new File(url + "同时3层第1层\\同时3层第2层\\同时3层第3层");
if (d1.exists()) {
d1.delete();
}
System.out.println("d1.mkdirs(): " + d1.mkdirs());
}
}
4.2 遍历文件夹目录
1.给出路径文件夹目录的2个方法
- 一、2种方法。给出目录数组
- 1.String[] list()
- 返回目录名称字符串数组 file.getName()
- 2.File[] listFiles()
- 返回目录File类型数组,
- listFiles(new FileFilter) 还可以传入过滤器的接口。(后面会详讲)
- 二、注意:
- 1.url不存在,file.list()返回空,再遍历就会 空指针异常
- 2.url不是指定 目录 ,空指针异常 nullPointerException
- 3.隐藏文件和文件夹也能识别
2.代码
package Java学习.Java高级.IO.File类.File类方法.File操作文件功能方法.遍历文件夹目录;
import java.io.File;
/**
* 一、2种方法。给出目录数组
* 1.String[] list()
*
* 2.File[] listFiles()
*
* 二、注意:
* 1.url不存在,file.list()返回空,再遍历就会 空指针异常
* 2.url不是指定 目录 ,空指针异常 nullPointerException
* 3.隐藏文件和文件夹也能识别
*/
public class Main {
static String url = "D:\\Program Files\\JetBrains\\test1\\Lab\\src\\J" +
"ava学习\\Java高级\\IO\\File类\\File类方法\\File操作文件功能方法";
public static void main(String[] args) {
System.out.println("----1.String[] list()------");
File file1 = new File(url);
String[] list = file1.list();
if (list!=null){
for (String s : list) {
System.out.println(s);
}
}
System.out.println("-----2.File[] listFiles()----");
File file2 = new File(url);
File[] listFiles = file2.listFiles();
if(listFiles!=null){
for (File listFile : listFiles) {
System.out.println(listFile);
}
}
}
}
4.3练习项目:
目的:打印src中的所有.java 文件,,使用FileFilter文件过滤器,和递归知识
介绍FileFilter过滤器接口。
-
- 一、需求:打印src中的所有.java 文件,,使用FileFilter文件过滤器
- 二、使用方法 : 带参数的listFiles()
- file.listFiles(new FileFilter{}),重写过滤的accept方法即可。
- 三、原理 listFiles(new FileFilter{}),
- 1.获取File的list数组,
- 2.将数组放到accept一个个判断
- 3.true就保存起来。
代码
package Java学习.Java高级.IO.File类.File类方法.File操作文件功能方法.遍历文件夹目录.练习3FileFilter文件过滤器实现练习2;
import java.io.File;
import java.io.FileFilter;
/**
* * 一、需求:打印src中的所有.java 文件,,使用FileFilter文件过滤器
* 二、使用方法 : 带参数的listFiles()
* file.listFiles(new FileFilter{}),重写过滤的accept方法即可。
* 三、原理 listFiles(new FileFilter{}),
* 1.获取File的list数组,
* 2.将数组放到accept一个个判断
* 3.true就保存起来。
*/
public class Demo {
static void useFileFiltersearchJava(File file) {
File[] listFiles = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().toLowerCase().endsWith(".java") || pathname.isDirectory();
}
});
for (File listFile : listFiles) {
if (listFile.isDirectory()) {
useFileFiltersearchJava(listFile);
} else if (listFile.isFile()) {
System.out.println(listFile.getName());
}
}
}
public static void main(String[] args) {
String url = "D:\\Program Files\\JetBrains\\test1\\Lab\\src";
useFileFiltersearchJava(new File(url));
}
}
转载:https://blog.csdn.net/jarvan5/article/details/105924503
查看评论