说明:参考代码部分的时候,请忽略异常处理语句。I/O中异常的有效处理办法请看【I/O异常处理】章节
/*
* I/O流(input/ output)
* 作用:解决设备与设备之间的数据传输问题,例如:
* -- 硬盘数据读取到内存
* -- 键盘数据读取到内存中
* -- 将内存数据写到硬盘中
*
* 应用场景:
* -- 报表导入
* -- 上传图片
* -- 数据下载
*
* 数据以文件的形式保存在内存上,可以永久保存,java中用一个File类来描述文件或是文件夹
*
* File类的构造方法
* -- File(String pathNma)
* 通过自定【文件】或【文件夹】的路径来创建一个FIle对象,将字符串路径转换成抽象的路径
*
* -- File(File parent, String child)
* 根据抽象父路径和字符串文件或是文件夹名穿件一个File对象
*
* -- File(String parent, String child)
* 根据字符串父路径和字符串文件或是文件夹名穿件一个File对象
*
* 注意:Windows机器的目录分隔符是:\ ; linux机器上的文件分隔符是/
* File中提供了File.separator常量来获取当前平台的分隔符
* windows上\和/都可以作为文件分隔符,使用/的时候用一个皆可以了,用\需要两个;
*
*
* 绝对路径和相对路径
* 绝对路径:从根目录开始定位的路径
* 相对路径:资源文件相对于当前程序所在的路径
* -- . 当前路径
* -- .. 上级路径
*
*
* File类常见方法
* 1. 创建
* createNewFile() 在定位的路径下面创建一个空文件,创建成果返回true,如果文件存在不创建返回false
* mkdir() 创建单级文件夹
* mkdirs() 创建多级别文件夹
* renameTo(File dest) 重命名文件或是文件夹,如果目标文化和当前文件在同一文件夹下,就是重命名
* 如果不在同一个路径下,就是剪切的作用。
*
*
* 2. 删除
* delete() 删除一个文件夹或是文件,删除成功返回true,删除失败返回false,不能删除非空文件夹
* deleteOnExit() jvm退出的时候删除文件,退出时自动删除,一般用于删除零时文件
*
* 3.判断
* exists() 判断文件或是文件夹是否存在
* isFile() 是否是文件
* isDirectory 是否是文件夹
* isHidden() 是否是一个隐藏文件/文件夹
* isAbaolute() 抽象路径是否为绝对路径
*
* 4.获取
* getName() 获取文件或是文件夹的名称,不包含上级目录
* getPath() 获取绝对路径,可以是相对路径,但是目录要指定
* getAbsolute() 获取文件的绝对路径,与文件是否存在没关系
* length() 获取文件的大小(字节),如果文件不存在返回0l,如果是文件夹返回0l
* getParent() 返回此抽象路径名父目录的路径名字符串,如果此路径没有指定父路径,返回null
* lastModified() 返回最后一次呗修改的时间(毫秒)
*
* 5. 文件夹操作
* static File[] listRoots() 获取所有的根目录,windows中就是所有的盘符
* list() 列出所有的目录下的文件,包括隐藏文件和子文件,不会迭代列出,返回一个路径数组,如果是目录是文件则返回null
* list(FIleNameFilter filter)
* listFiles() 返回File对象的文件数组
* listFiles(filenameFIlter filter)
*
* 6.其他操操作
* listFiles(FilenameFilter filter) 返回当前目录中符合过滤条件的文件或是字子目录,如果目录是文件,则返回null
* list(FileNameFIlter filter) 返回当前目录中符合过滤条件的文件或是字子目录,如果目录是文件,则返回null
*
*/
package com.michael.jdk15;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
//定义一个文件名过滤器
class MyFilter implements FilenameFilter{
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
//dir 文件目录
// name //文件名
return name.endsWith(".java");
}
}
public class Demo8 {
public static void main(String[] args){
File file = new File("c:\\");
File file1 = new File("c:\\Users\\c.txt");
System.out.println("存在吗?" + file.exists()); //判断文件是否存在
System.out.println("文件夹存在吗?" + file1.exists());
File file2 = new File("c:\\");
File file3 = new File(file2, "c.txt");
System.out.println("文件存在吗?" + file3.exists());
System.out.println("绝对路径" + file.getAbsolutePath()); //绝对路径
try {
System.out.println("创建成功了吗" + file1.createNewFile());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String[] fileName = file.list();
for(String f:fileName){
System.out.println(f);
}
//列出所有的.java文件
File filePath = new File("E:\\JBASE\\day19\\src\\com\\michael\\jdk15");
File[] fileArr = filePath.listFiles(); //获取所有的子文件(夹)
for(File f : fileArr){
//方式一:使用字符串筛选
/*if(f.getName().endsWith(".java")){ //判断文件名是否以.java结尾
System.out.println(f.getName()); //输出文件名
}*/
//方式二:使用正则筛选
if(f.isFile()&&f.getName().matches(".+\\.java"));
System.out.println(f.getName());
}
}
//分类格式化输出文件(夹):
public static void listFile(File dir){
File[] files = dir.listFiles();
System.out.println("文件:");
for(File fileItem : files){
if(fileItem.isFile()){
System.out.println("\t" + fileItem.getName());
}
}
System.out.println("文件夹:");
for(File fileItem : files){
if(fileItem.isDirectory()){
System.out.println("\t" + fileItem.getName());
}
}
}
}