zoukankan      html  css  js  c++  java
  • 使用文件流创建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";
  • 相关阅读:
    SQL查询最近12个月的数据量 没有补0
    SQL查询当前月每天的数据量,没有补0
    Mac上安装mysqlclient报错:OSError: mysql_config not found
    Vue packages version mismatch: 版本始终不对
    python 时间格式2019-08-18T16:00:00.000000Z转换成常见的格式
    前端css的flex布局
    用vim编辑文件时出现错误:E325: ATTENTION的问题与解决方法
    报错:AssertionError: `basename` argument not specified, and could not automatically determine the name from the viewset, as it does not have a `.queryset` attribute.
    PDF打印:html2canvas+jspdf
    python list的Avg、WAvg、Max、Min
  • 原文地址:https://www.cnblogs.com/weimore/p/7249618.html
Copyright © 2011-2022 走看看