IO流

IO流(Input Output) :

IO技术主要的作用是解决设备与设备之间 的数据传输问题。 比如: 硬盘--->内存 内存的数据---->硬盘上 把键盘的数据------->内存中

IO技术的应用场景:
导出报表 , 上传大头照 、 下载 、 解释xml文件 ...

数据保存到硬盘上,该数据就可以做到永久性的保存。 数据一般是以文件的形式保存到硬盘上

sun使用了一个File类描述了文件或者文件夹的。

File类可以描述一个文件或者一个文件夹。


File类的构造方法:

  • File(String pathname) 指定文件或者文件夹的路径创建一个File文件。
  • File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
  • File(String parent, String child)

目录分隔符: 在windows机器上 的目录分隔符是 ,在linux机器上的目录分隔符是/ .

注意: 在windows上面 与 / 都可以使用作为目录分隔符。 而且,如果写/ 的时候只需要写一个即可。

public class Demo1 {
    public static void main(String[] args) {
        File file=new File("D:\file.txt");
        File parentFile=new File("D:\");
        File file2=new File(parentFile,"file.txt");
        File file3=new File("D:\","file.txt");
        File file4=new File(".");
        
        System.out.println("文件是否存在"+file.exists());
        System.out.println("文件是否存在"+file2.exists());
        System.out.println("文件是否存在"+file3.exists());
        System.out.println("当前文件路径"+file4.getAbsolutePath());
    }
//    搜索d盘文件
    public static File text(String child) {
        File parentFile=new File("D:\");
        File file2=new File(parentFile,child);
        return file2;
    }
}

一、创建

createNewFile() 在指定位置创建一个空文件,成功就返回true,如果已存在就不创建然后返回false

mkdir() 在指定位置创建目录,这只会创建最后一级目录,如果上级目录不存在就抛异常。

mkdirs() 在指定位置创建目录,这会创建路径中所有不存在的目录。

renameTo(File dest) 重命名文件或文件夹,也可以操作非空的文件夹,文件不同时相当于文件的剪切,剪切时候不能操作非空的文件夹。

移动/重命名成功则返回true,失败则返回false。

public class Demo2 {
    public static void main(String[] args) throws IOException {
        //file创建方法
        File file=new File("D:\file.txt");//创建文件名称
        System.out.println("创建成功了吗:"+file.createNewFile());
        File dir =new File("D:\file");//创建文件夹名称
        System.out.println("创建文件成功麻?"+dir.mkdir());
        File dirs=new File("D:\file\aa");//创建多级文件夹名称
        System.out.println("创建多文件成功麻?"+dirs.mkdirs());
        
    }
}

二、删除操作

delete() 删除文件或一个空文件夹,如果是文件夹且不为空,则不能删除,成功则成功true不成功false;
* deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录,保证程序异常时创建的临时文件也可以被删 除
* deletedeleteOnExit区别
* 1.delete是执行后马上删除 ,deleteOnExit是虚拟机终止时才进行删除操作,多用于删除临时文件

public class Demo3 {
    public static void main(String[] args) {
        File file=new File("F:\a.txt");
//        System.out.println("删除成功麻"+file.delete());
//        file.deleteOnExit();//java虚拟机退出的时候删除文件
//        判断方法
        File file2=new File("F:\a.txt");
        System.out.println("文件是否是一个文件"+file2.exists());
        System.out.println("判断是否是一个文件"+file2.isFile());
        System.out.println("判断是否是一个文件夹"+file2.isDirectory());
        System.out.println("判断是否是一个隐藏的文件"+file2.isHidden());
        System.out.println("判断是否是一个绝对路径"+file2.isAbsolute());
    }
}

应用

//需求1 :  指定一个文件夹,然后该文件夹下面所有java文件。

//需求2: 指定一个文件夹,然后列出文件夹下面的所有子文件与文件夹,但是格式要如下:
class MyFilters implements FilenameFilter{
    public boolean name() {
        return false;
        
    }

    @Override
    public boolean accept(File dir, String name) {
        // TODO Auto-generated method stub
        return name.endsWith(".java");
    }
}
public class Demo5 {
    public static void main(String[] args) {
        File dir =  new File("D:\BaiduYunDownload\2015年传智播客Java第32期基础+就业班(84天)视频\基础班\day06\day06\代码");
        File dir2 =  new File("D:\BaiduYunDownload\2015年传智播客Java第32期基础+就业班(84天)视频\基础班\day06");
//        listFiles(dir2);
        listJava2(dir);
    }
    public static void listJava2(File dir){
        File[] files = dir.listFiles(new MyFilters()); //得到文件夹下面的所有子文件与文件夹。
        for(File file : files){
            System.out.println(file.getName());
        }
    }
    public static void listJava(File dir) {
        File[] files=dir.listFiles();//获取所有子文件
        for(File file:files){
            String finleName=file.getName();
//            if(finleName.endsWith(".java")&&file.isFile()){
//                System.out.println(finleName);
//            }
//            正则判断
            if(finleName.matches(".+\.java")&&file.isFile()){
                System.out.println(finleName);
            }
        }
    }
    public static void listFiles(File dir) {
        File[] files= dir.listFiles();
        System.out.println("文件");
        for(File file:files){
            if(file.isFile()){
                System.out.println("	"+file.getName());
            }
        }
        System.out.println("文件夹");
        for(File file:files){
            if(file.isFile()){
                System.out.println("	"+file.getName());
            }
            if(file.isDirectory()){
                System.out.println("	"+file.getName());
            }
        }
    }
}
原文地址:https://www.cnblogs.com/chenzxl/p/7868300.html