------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
File类的概述和构造方法
File类是什么?有什么用哪?
在windows系统上,我们所说的File其实就是一个文件(目录).
就是使用java中提供的File类来映射一个文件。
注意:我们使用File来映射一个文件,只能对文件的属性进行操作,而不能修改文件的内容。如果要对文件的内容进行操作,只能使用
package cn.itcast.file;
import java.io.File;
//创建File对象
//File(String pathname)
//File(String parent,String child)
//File(File parent,String child)
public class FileDemo1 {
public static void main(String[] args) {
File file = new File("d:/b/c/d/a.txt");
}
// 1.使用File(String pathname)来描述d:/a.txt文件
public static void demo1() {
// File file = new File("d:\\a.txt");
// File file=new File("d:/a.txt");
// 注意:在linux系统中它的分隔符就是"/" 在widnows系统中它的分隔符是"\",在java开发中,可以使用一个/来代替\\
// 注意:如果想要写一个通用的程序,在任何系统上都可以使用
File file = new File("d:" + File.separator + "a.txt");
}
// 2.使用File(String parent,String child)来描述 d:/a.txt文件
public static void demo2() {
File file = new File("d:/a", "a.txt");
}
// 3.使用File(File parent,String child)来描述d:/a/a.txt
public static void demo3() {
File parent = new File("d:/a"); // 它映射的是d:/a目录
File file = new File(parent, "a.txt"); // d:/a目录下的a.txt文件。
}
}
File类的创建功能
<span style="font-size:14px;">package cn.itcast.file;
import java.io.File;
import java.io.IOException;
//介绍File类中的创建方法
//1.创建文件 createNewFile()
//public boolean createNewFile(); 这个方法抛出了IOException异常,我们在使用它时需要处理。
//如果指定的文件的路径错误,抛出异常
//2.创建目录 mkdir();
//public boolean mkdir();
//3.创建目录mkdirs(); 用于创建多层目录.
//public boolean mkdirs();
public class FileDemo2 {
public static void main(String[] args) {
demo3();
}
// 1.创建文件 createNewFile()
public static void demo1() {
File file = new File("d:/a.txt"); // 这个文件不存在
try {
System.out.println(file.createNewFile());
} catch (IOException e) {
e.printStackTrace();
}
}
// 2.创建目录
public static void demo2() {
File file = new File("d:", "a.txt"); // 这个文件不存在
file.mkdir();
}
// 3.创建多层目录
public static void demo3() {
File file = new File("d:/a/b/c");
System.out.println(file.mkdirs());
}
}</span>
关于java中文件路径问题
绝对路径:可以简单理解成是c:/xxx d:/xxx 带盘符
相对路径:它是需要参照物的。
如果我们使用记录本来操作,这时创建的文件与.java在同一目录下。
如果我们使用eclipse它的相对路径,在当前工和下,它是相对于src。
注意:我们在使用相对路径是时,经常使用”..”,它代表的是上一层目录。
File类的高级获取功能
package cn.itcast.file;
import java.io.File;
//File类的高级获取功能
//list
//public String[] list();用于获取当前目录下的所有子的名称的一个字符串数组。
//listFiles
//public File[] listFiles();用于获取当前目录下所有子的一个File数组
public class FileDemo8 {
public static void main(String[] args) {
demo1();
}
// list方法
public static void demo1() {
File file = new File("c:/a");
String[] files = file.list();
for(String f:files){
System.out.println(f);
}
}
// listFiles方法
public static void demo2() {
File file = new File("c:/a");
File[] files = file.listFiles();
//new File("c:/a/a.txt") new File("c:/a/b");
for(File f:files){
System.out.println(f.getName()); //获取文件名称
}
}
}
输出指定目录下指定后缀名的文件名称
package cn.itcast.file;
import java.io.File;
//得到一个指定目录下的指定后缀名的文件
//例如:得到a目录下的所有.java文件名称
public class FileDemo9 {
public static void main(String[] args) {
}
// 使用listFiles方法解决
public static void demo2() {
// 分析:
// 1.定义一个File对象映射a目录
File file = new File("c:/a");
// 2.调用list方法得到其下所有子文件的名称
File[] fs=file.listFiles();
// 3.判断文件的名称是否以.java结束,如果是将这个名称打印出来。
for(File f:fs){
if(f.getName().endsWith(".java")){
System.out.println(f.getName());
}
}
}
// 使用list方法解决
public static void demo1() {
// 分析:
// 1.定义一个File对象映射a目录
File file = new File("c:/a");
// 2.调用list方法得到其下所有子文件的名称
String[] fs = file.list();
// 3.判断文件的名称是否以.java结束,如果是将这个名称打印出来。
for (String f : fs) {
if (f.endsWith(".java")) { // 这个是判断文件的后缀是否是.java
System.out.println(f);
}
}
}
}
文件过滤器改进输出指定目录下指定后缀名的文件名称
package cn.itcast.file;
import java.io.File;
import java.io.FileFilter;
//使用文件过滤器来得到指定目录下指定文件
public class FileDemo10 {
public static void main(String[] args) {
// 1.定义一个file对象,用于映射a目录
File file = new File("c:/a");
// 2.调用listFile方法(有参数)
File[] fs = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) { // accept方法它的参数,就是目录下的所有的子文件,返回值如果为true,代表可以装入到数组中,否则不能装入.
if (pathname.getName().endsWith(".java")) {
return true;
}
return false;
}
});
// 3.遍历数组,得到文件名称
for (File f : fs) {
System.out.println(f.getName());
}
}
}
带文件名称过滤器的list()方法的源码
public String[] list(FilenameFilter filter) {
String names[] = list();
if ((names == null) || (filter == null)) {
return names;
}
List<String> v = new ArrayList<>();
for (int i = 0 ; i < names.length ; i++) {
if (filter.accept(this, names[i])) {
v.add(names[i]);
}
}
return v.toArray(new String[v.size()]);}