使用文件流创建File文件和目录以及其他的一些操作

    我们创建文件时可以直接通过File f=new File(path)来创建一个文件对象,然后再通过 f.createNewFile() 就创建出来了一个文件。比如设置 path 为 C:UserswclDesktopdemo.txt  就可以在桌面上创建一个 demo.txt 文件。注意这里要try/catch。

       try {
            String path = "C://Users/wcl/Desktop/demo.txt";
            File f = new File(path);
            f.createNewFile();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

  如果你的path里还包含了未创建的文件夹目录,比如 path 为 C:\UserswclDesktopdatademo.txt 则会报错,提示‘’系统找不到指定的路径‘’。,因为这里的 data 文件夹不存在。

这时候我们可以先创建文件夹再创建文件,创建文件夹可以使用f.mkdir()方法,如果你想创建一个多级文件夹,则可以用f.mkdirs()方法创建。

        try {
            String path = "C://Users/wcl/Desktop/data/demo.txt";
            File f = new File(path);
            if(!f.exists()){
                f.mkdirs();
            }
            f.createNewFile();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 

我这里写的path仍然为之前的path,执行上述的代码之后,我们会在桌面上创建出来一个data文件夹,打开文件夹后,会看到里面还有一个名为demo.txt的文件夹。

这不是我们想要的结果,因为我们想要的是data文件夹里有的是demo.txt文件,那么我们可以结合f.mkdirs()和f.createNewFile()两个方法来创建:

    try {
           String path = "C://Users/wcl/Desktop/data/demo.txt";
           File f = new File(path);
           if(!f.getParentFile().exists())
                f.getParentFile().mkdirs();if( !f.exists() ){
                    f.createNewFile();
                }
        } catch (IOException e) {
            e.printStackTrace();
        }

          上面的代码先是通过f.getParentFile() 来获取到上一级的文件夹,也就是data文件夹,通过f.getParentFile().exists()来判断文件夹是否存在,如果不存在则创建 data 目录(文件夹),同时创建 demo.txt 文件。如果目录(文件夹)已存在,则进行第二次判断,判断目录文件中是否已存在 demo.txt 文件,如果存在则不操作,如果不存在就创建。这样目录和文件夹就都创建好了。

附:

1.创建临时文件

File f = File.createTempFile(“text”, "txt");

createTempFile()里面传入两个参数,第一个为临时文件的前缀,第二个为后缀。

2.遍历文件

String path="...";
        File f=new File(path);
        File []files = f.listFiles();
        for(File file:files){
            System.out.println(file.getAbsolutePath());
        }

3.关于路径分隔符:

因为不同系统的路径分隔符不一样,故可以在java中使用 File.separator 作为目录分隔符 

比如之前的 path 路径就可以写成

String path = "C:"+File.separator+"Users"+File.separator+"wcl"+File.separator+"Desktop"+File.separator+"data"+File.separator+"demo.txt";
原文地址:https://www.cnblogs.com/weimore/p/7249618.html