我们创建文件时可以直接通过File f=new File(path)来创建一个文件对象,然后再通过 f.createNewFile() 就创建出来了一个文件。比如设置 path 为 C:\Users\wcl\Desktop\demo.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:\\Users\wcl\Desktop\data\demo.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";