------- android培训、java培训、期待与您交流! ----------
前言:通过观看毕向东老师的java基础视频,查漏补缺,将一些自己掌握的还不牢固的知识写出来,希望和大家交流分享。
对于Java的IO的掌握就比较薄弱,需要多花点功夫。File类是相对简单的类,先从它开始。
File——文件类
1. File类所在的位置:java.io
2. File类作用:文件和目录路径名的抽象表现形式,即是对文件和文件夹的描述。用来将文件或文件夹封装成对象,方便于对文件与文件夹的属性信息进行操作。
3. 特点:
1)对文件的路径的描述,不同的操作系统平台不同。对于 UNIX 平台,绝对路径名的前缀始终是 "/"。对于 Microsoft Windows 平台,包含盘符的路径名前缀
由驱动器号和一 个 ":" 组成。如果路径名是绝对路径名,还可能后跟"\\"或"/"。在java中"\"表示转译。
2)File 类的实例是不可变的;也就是说,一旦创建,File 对象表示的抽象路径名将永不改变。
3)File对象可以作为参数传递给流的构造函数。
4.File类字段摘要
说明:类中的字段都是常量。
四个字段:
1)static String pathSeparator 与系统有关的路径分隔符,为了方便,它被表示为一个字符串。在Windows下是";"
2)static char pathSeparatorChar 与系统有关的路径分隔符。在Windows下是";"可以联想到之前配置的环境变量。
3)static String separator 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。Windows下是"\"
4)static char separatorChar 与系统有关的默认名称分隔符。Windows下是"\"。
5.File类对象的创建
1)方式一:File f =new File("D:/v5/87.txt");通过将给定路径名字符串转换为抽象路径名来创建一个新File
实例。
2)方式二:File f=newFile("D:/v5","87.txt");根据 parent 路径名字符串和 child路径名字符串创建一个新File
实例。
3) 方式三: File f=new File("D:/v5");File f3=newFile(d,"87.txt");将文件目录路径封装成对象。再创建文件对象。降低了文件于父目录的关联性。
4)方式四:File f = new File("http://java.sun.com/j2se/1.3"); 通过将给定的file: URI 转换为一个抽象路径名来创建一个新的File 实例。这得到是网上的文件。
6、File类常用方法
1)文件及文件夹的创建:
1. 创建文件:booleancreateNewFile() 当且仅当不存在具有此抽象路径名指定名称的文件时,创建一个新的空文件。在创建前如果不存在该文件返回true否则返回false。
File f =new File("D:/v5/songwenju.txt");
Boolean b = f.createNewFile();//throws IOException
System.out.println(b);//之前不存在的情况下是true
2. 创建文件夹:已经存在的目录D:/v5在已经存在的目录下
创建单个文件夹:mkdir() 创建此抽象路径名指定的目录。当已创建目录时,返回true
;否则返回false
。
f =new File("D:/v5/songwenju");
b = f.mkdir();
System.out.println(b);
在已经存在的目录下
创建多层文件夹:创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。注意,此操作失败时也可能已经成功地创建了一部分
必需的父目录。当且仅当已创建目录以及所有必需的父目录时,返回 true;否则返回false
f=new File("D:/v5/songwenju/a");
b = f.mkdirs();
System.out.println(b);
2)文件和文件夹的删除
boolean delete();删除此抽象路径名表示的文件或目录。如果此路径名表示一个目录,则该目录必须为空才能删除。
deleteOnExit();虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
f =new File("D:/v5/songwenju/a");
b = f.delete();
b = f. deleteOnExit();
3)属性的判断
boolean canExecute();//是否是可执行文件
boolean canRead();//是否可读
boolean canWrite();//是否可写
boolean exists();//文件是否存在
boolean isFile();//是否是文件
boolean isDirectory();//是否是文件夹
boolean isHidden();//是否是隐藏文件
boolean isAbsolute();//文件是否是绝对路径
4)获取文件或文件夹的一些信息
StringgetName();//获取文件名。
String getPath(); //获取文件的相对路径。(创建的对象传入的参数)
String getParent();//获取文件父目录。返回的是绝对路径中的父目录。如果获取的是相对路径,返回null。如果相对路径中有上一层目录,那么该目录就是返回结果。
String getAbsolutePath();//获取文件的绝对路径 。
long lastModified();//返回文件最后一次被修改的时间。
long length();//返回文件大小。
5)列出文件以及文件的过滤
1.String[] list(); //列出当前目录下所有文件,包括隐藏。调用list方法的file对象必须是封装了一个目录。该目录还必须存在。
2.File[] listFiles();//返回一个抽象路径名数组,获取当前文件夹下的所有文件和文件夹
//说明:以上两个方法的作用一致,不同的是返回类型不一样。
3.File[] ListFiles(FilenameFilterfilter);//返回抽象路径名数组,获取目录中满足指定过滤器的文件或目录。
//FilenameFilter:文件名过滤器,是一个接口,其中包含accept(Filedir,String name) 方法,返回的是boolean型,对不符合条件的文件过滤掉。
4.static File[] listRoots();//列出可用的文件系统根目录,即系统盘符
7.与文件操作有关的典型练习
1) 列出一个文件夹下的所有以.java为后缀的文件。
package file;
import java.io.File;
import java.io.FilenameFilter;
/**
* 列出一个文件夹下的所有以.java为后缀的文件。
* @author songwenju
* 思路:1.利用 String[]list(FilenameFilter filter)这个方法
* 2.实现FilenameFilter接口的匿名内部类accept。
* 3.遍历输出
*
*/
public class GetJavaFile {
publicstaticvoidmain(String[] args) {
File file =new File("D:/v5");
getJavaFile(file);
}
/**
* 获取一个目录下所有.java结尾的方法。
* @param dir
*/
publicstaticvoidgetJavaFile(File dir){
String [] javaFile = dir.list(new FilenameFilter() {
//覆写FilenameFilter接口中的匿名内部类
@Override
publicbooleanaccept(File dir,String name) {
//保留以.java结尾的文件信息
return name.endsWith(".java");
}
});
System.out.println("len:"+javaFile.length);
for (String string : javaFile) {
System.out.println(string);
}
}
}
运行结果:
2. 列出一个文件中所有的内容
package file;
import java.io.File;
/**
* 列出一个文件夹中所有的内容
* @author songwenju
* 思路:1.先得到该文件夹中所有的文件
* 2.逐个判断是否是文件夹,如果是输出文件夹名再得到该文件夹的内容。如果不是则直接输出。
*/
public class ListAllFile {
public static void main(String[] args) {
File file = new File("d:/v5/songwenju");
listAllFile(file);
}
/**
* 用递归的方法列出文件夹中所有内容
* @param dirs
*/
public static void listAllFile(File dirs){
//得到该目录下的所有文件和文件夹
File[]files = dirs.listFiles();
for (File file : files) {
//输出数组中所有的内容
System.out.println(file);
//如果其中一个是文件夹则列出该文件夹中所有内容
if (file.isDirectory()) {
listAllFile(file);
}
}
}
}
运行结果:
package file;
import java.io.File;
/**
* 删除一个带内容的目录。
* @author songwenju
*
*/
public class DeleteDirs {
public static void main(String[] args) {
//指定要删除的目录
File file = new File("D:/v5/songwenju");
deleteDirs(file);
}
/**
* 利用递归删除该目录下的所有内容
* @param dirs
*/
public static void deleteDirs(File dirs){
//得到该目录下的所有文件和文件夹
File[] files = dirs.listFiles();
//逐个遍历
for (File file : files) {
//如果没有隐藏或是目录的话
if (!file.isHidden()&&file.isDirectory()) {
deleteDirs(file);
}else {
//删除文件
System.out.println(file+"------>file delete is:"+file.delete());
}
}
//删除目录
System.out.println(dirs+"----->dirs delete is:"+dirs.delete());
}
}
运行结果:
------- android培训、java培训、期待与您交流! ----------