论坛首页 Java企业应用论坛

实现批量迭代创建目录

浏览 6542 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (1)
作者 正文
   发表时间:2009-01-20   最后修改:2009-01-20
公司项目要创建基础数据
一共有400多张表
没办法,只有一个一个敲入Excel中再导入数据库
但还要为每张表创建一个目录
有了数据就会好办了 不用一个一个敲了
写了一个批量创建目录的程序
半小时就搞定

分享给大家,以备不时之需

package mkdir;


import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;

/**
 * 
 * @author BruceRan
 * 迭代创建目录和文件
 * path.txt中文件存放形式像这样:
 * pages/systemdata/systemcode/sex/index.jsf
 * pages/systemdata/systemcode/degree/index.jsf
 */
public class BatchMkdir {
	public static void main(String[] args) {
		try {
			FileInputStream is=new FileInputStream("path.txt");
			Reader read = new InputStreamReader(is);
			BufferedReader br = new BufferedReader(read);
			String str;
			while((str=br.readLine())!=null){
				String[] dir=str.split("/");
				
				System.out.println(dir.length);
				
				File dir1 = new File("d:\\dirs\\"+dir[0]);
				dir1.mkdir();
				
				File dir2 = new File("d:\\dirs\\"+dir[0]+"\\"+dir[1]) ;
				dir2.mkdir();
				
				File dir3 = new File("d:\\dirs\\"+dir[0]+"\\"+dir[1]+"\\"+dir[2]) ;
				dir3.mkdir();
				
				File dir4 = new File("d:\\dirs\\"+dir[0]+"\\"+dir[1]+"\\"+dir[2]+"\\"+dir[3]) ;
				dir4.mkdir();
				
				
				if(dir[4].equals("index.jsf")){
					File file = new File("d:\\dirs\\"+dir[0]+"\\"+dir[1]+"\\"+dir[2]+"\\"+dir[3]+"\\index.jsp");
					file.createNewFile();
				}					
				}
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			}catch (IOException e) {
				e.printStackTrace();
		}	
	}
	
}
   发表时间:2009-01-20  
江南白衣同志曾写过一个自动生成目录的代码在测试时..
无限循环了.
最后硬盘不得不格掉以删除一此超长的目录树.
0 请登录后投票
   发表时间:2009-01-20   最后修改:2009-01-20
import java.io.File;
import java.io.FileInputStream;

import jxl.Sheet;
import jxl.Workbook;

public class CreateDir {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			if (args.length < 1) {
				throw new IllegalArgumentException("未指定Excel文件名");
			}
			if (args.length < 3) {
				throw new IllegalArgumentException("指定的参数值不够");
			}
			FileInputStream fis = new FileInputStream(args[0]);
			Workbook rwb = Workbook.getWorkbook(fis);
			fis.close();
			String str = args[1];
			int row = Integer.parseInt(args[2]);
			if (row < 1) {
				return;
			}
			Sheet[] sheets = rwb.getSheets();
			Sheet interfaceSheet = sheets[0];
			for (int i = 0; i < interfaceSheet.getRows(); i++) {
				String fold1 = "";
				for (int j = 0; j <= row; j++) {
					String fold = interfaceSheet.getCell(j, i).getContents()
							.trim();
					boolean ct = false;
					fold1 += "\\" + fold;
					if (fold1 != null && !fold1.equals("")) {
						ct = CreatePath(str + fold1);
					}
					if (!ct) {
						break;
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 生成文件夹
	 * 
	 * @param path
	 * @return
	 * @throws Exception
	 */
	private static boolean CreatePath(String path) throws Exception {
		File dirFile = null;
		try {
			dirFile = new File(path);
			if (!(dirFile.exists()) && !(dirFile.isDirectory())) {
				boolean creadok = dirFile.mkdirs();
				if (creadok) {
					System.out.println(" ok:创建文件夹成功! ");
				} else {
					System.out.println(" err:创建文件夹失败! " + path);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println(e);
			return false;
		}
		return true;
	}
}

 

0 请登录后投票
   发表时间:2009-01-20  
用perl或者Python试试?总觉得这样简单的事情用Java有点杀鸡用牛刀了。
0 请登录后投票
   发表时间:2009-01-21  
感谢上面的朋友 分享你的完整代码 很有重用性
我只是针对我的需要写了个简单的而已
0 请登录后投票
   发表时间:2009-01-21  
我以前也见过一个人,递归创建目录的时候,条件没有控制好,硬盘上存在了数十万个目录,删都删不了,最后也低格硬盘了!
0 请登录后投票
   发表时间:2009-02-09  
刚刚给原来的程序改了一下,
代码如下:
public class BatchMkdir2 {
	public static void main(String[] args) {
		try {
			FileInputStream is = new FileInputStream("path.txt");
			Reader read = new InputStreamReader(is);
			BufferedReader br = new BufferedReader(read);
			String str;
			while ((str = br.readLine()) != null) {
				String[] dir = str.split("/");

				System.out.println(dir.length);
				for (int i = 0; i < dir.length; i++) {
					String name = "d:\\dirs";
					if (!dir[i].equals("index.jsf")) {
						for (int j = 0; j <= i; j++) {
							name += "\\" + dir[j];
							System.out.println("====" + name);
						}
						File newDir = new File(name);
						newDir.mkdir();
					} else {
						for (int j = 0; j < i; j++) {
							name += "\\" + dir[j];
							System.out.println("=file===" + name);
						}
						File newFile = new File(name + "\\index.jsp");
						System.out.println("=file2===" + name);
						newFile.createNewFile();
					}
				}
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}
0 请登录后投票
   发表时间:2009-02-09  
抛出异常的爱 写道
江南白衣同志曾写过一个自动生成目录的代码在测试时..
无限循环了.
最后硬盘不得不格掉以删除一此超长的目录树.

我有一次也创建了删不掉,最后方法是用程序删除或Ant
程序上没有目录深度的限制
0 请登录后投票
   发表时间:2009-02-11   最后修改:2009-02-11
不知道搂住是什么意思。File.mkdirs不能实现么?

似乎没必要一级级的创建。(可能我没理解你的实际需求)
0 请登录后投票
   发表时间:2009-02-14  
抛出异常的爱 写道
江南白衣同志曾写过一个自动生成目录的代码在测试时..
无限循环了.
最后硬盘不得不格掉以删除一此超长的目录树.


呵呵,这种事故偶同事就遇到过,惨哦!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics