输入/输出(input/output)是指对某个物理或逻辑设备或某种环境进行数据的输入和输出。
- File类
不同操作系统的路径名称表示是有差别的,如在windows中,一个可能的路径名为“E:\JSP\bin”,而Linux下的路径名可能为“/home/JSP/bin”。windows的路径使用UNC(Universal Naming Convention)路径名,以“\”开始的目录表示上下文环境所在目录的硬盘跟目录。如果没有以“\”作为路径的开始,则表示相对于当前工作目录的路径,并且通过“盘符(C/D/E):”形式表示硬盘指定。而Linux系统没有windows系统硬盘驱动器的概念,它的路径以“/”开始,表示从根目录开始的绝对路径,不以“/”开始的路径是相对于当前路径的相对路径。
注意:在java中,无论是文件还是目录,都是用File类的实例表示。
1、文件或目录的生成
File类的构造函数
public File(String path)
如果path是实际存在的路径,则该File对象表示的是目录;如果path是文件名,则该File对象表示的是文件。
File类的构造函数
public File(String path,String name)
path是路径名,name是文件名。
File类的构造函数
public File(File dir,String name)
dir是路径名,name是文件名。
2、文件名的处理
//得到一个文件的名称(不包括路径)
String getName()
//得到一个文件的路径名
String getPath()
//得到一个文件的绝对路径名
String getAbsolutePath()
//得到一个文件的上一级目录名
String getParent()
//将当前文件名更名为给定文件的完成路径
String renameTo(File newName)
3、文件属性测试
//测试当前File对象所指示的文件是否存在
boolean exists()
//测试当前文件是否可写
boolean canWrite()
//测试当前文件是否可读
boolean canRead()
//测试当前文件是否是文件(不是目录)
boolean isFile()
//测试当前文件是否是目录
boolean isDirectory()
4、普通文件信息和工具
//得到文件最近一次修改的时间
long lastModified()
//得到文件的长度,以字节为单位
long length()
//删除当前文件
boolean delete()
5、目录操作
//根据当前对象生成一个由该对象指定的路径
boolean mkdir()
//列出当前目录下的文件
String list()
6、应用
import com.sun.org.apache.xpath.internal.SourceTree;
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.logging.LogRecord;
/**
* @ 描 述 : 文件操作
* @ 作 者 : 一念〃
* @ 时 间 : 10:40 2018/11/18
* @ 备 注 :
*/
public class FileTest {
public void readFileList(File file, Filter filter){
//判断file是否为目录
if(file.isDirectory()){
//列出所有的文件及目录
File[] files = file.listFiles();//创建目录数组
//通过数组创建数组列表
ArrayList<File> fileArrayList = new ArrayList<File>();
//for循环变量数组
for (int i = 0;i<files.length;i++){
//先列出目录
if(files[i].isDirectory()){//判断是否为目录
//输出路径名
System.out.println("["+files[i].getPath()+"]");
readFileList(files[i],filter);//递归调用readFileList方法
}else{
//文件先存入fileList,待会再列出
fileArrayList.add(files[i]);
}
}
//列出文件
for (File f : fileArrayList){
readFileList(f,filter);//调用readFileList方法
System.out.println();//换行
}
}else if(file.isFile()){
//当file为文件时
fileDesc(file);//调用fileDesc方法
}
}
public void fileDesc(File file){
if(file.isFile()){
//判断是否为文件
System.out.println(file.toString()+"\n该文件");//输出字符串信息
System.out.println(file.canRead()?"可读":"不可读");//判断文件是否可读
System.out.println(file.canWrite()?"可写":"不可写");//判断文件是否可写
System.out.println(file.length()+"字节");//输出字节数
}
}
public static void main(String[] args) {
String filename = "E:\\JAVA";//给一个路径
File file = new File(filename);//创建并初始化由文件名决定的文件对象
Filter filter = new Filter("java");//创建并初始化文件过滤器
//创建实例,调用readFileList方法
new FileTest().readFileList(file,filter);
}
}
class Filter implements FilenameFilter{
String extent;
//声明实现Filter类的构造
Filter(String extent){
this.extent = extent;
}
@Override
public boolean accept(File dir, String name) {
return name.endsWith("."+extent);//返回文件后缀
}
}