昨天一师弟突然来问我这个问题:因为我项目打算获取本地的磁盘,当用户点击了文件后,获取他点击的路径,然后在哪创建文件或删除文件什么的
当时想到的是通过递归来实现,整理下思路(ps:因为先前写过Java通过递归来压缩,和解压文件、文件夹)所有印象有点深刻
实现代码:
package DirFolderManager; import java.io.File; import java.io.IOException; /** * <p>Title:Demo</p> * <p>Description:创建文件或者文件夹</p> * <p>Copyright: Copyright (c) VISEC 2015</p> * <P>CreatTime: Apr 1 2015 </p> * @author Dana丶Li * @version 1.0 */ public class Demo{ /** *创建文件、文件夹{调用makeDir() 递归方法} *file.exists() 返回 true 文件、文件夹存在 *file.exists() 返回 false 文件、文件夹不存在 *@ throws IOException */ public static boolean createFile(File file) throws IOException { if(!file.exists()){ makeDir(file.getParentFile()); } return file.createNewFile(); } /** * 递归方法 * makeDir() 采用递归方法对文件、文件夹进行遍历创建新文件、新文件夹 * @param dir */ public static void makeDir(File dir) { if(! dir.getParentFile().exists()) { makeDir(dir.getParentFile()); } dir.mkdir(); } /** * 测试入口 * @filePath 文件路径 {注:包括文件名以及文件后缀名,createFile(file)直接在文件名之前的路径下创建该文件} * @param args */ public static void main(String args[]){ String filePath = "D:/temp/a/b/c.txt"; File file = new File(filePath); try{ System.out.println("file.exists()? " + file.exists()); boolean created = createFile(file); System.out.println(created?"File created":"File exists, not created."); System.out.println("file.exists()? " + file.exists()); } catch (IOException e) { e.printStackTrace(); } } }