兑现批量迭代创建目录
实现批量迭代创建目录
公司项目要创建基础数据
一共有400多张表
没办法,只有一个一个敲入Excel中再导入数据库
但还要为每张表创建一个目录
有了数据就会好办了 不用一个一个敲了
写了一个批量创建目录的程序
半小时就搞定
分享给大家,以备不时之需
我有一次也创建了删不掉,最后方法是用程序删除或Ant
程序上没有目录深度的限制
呵呵,这种事故偶同事就遇到过,惨哦!
最后白衣同志将此代码命名为 java 版 硬盘完美格式化 1.01版本 (1.00版本被 ‘抛出异常的爱’测出问题了)

公司项目要创建基础数据
一共有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(); } } }
1 楼
抛出异常的爱
2009-01-20
江南白衣同志曾写过一个自动生成目录的代码在测试时..
无限循环了.
最后硬盘不得不格掉以删除一此超长的目录树.
无限循环了.
最后硬盘不得不格掉以删除一此超长的目录树.
2 楼
a2570
2009-01-20
<pre name="code" class="java">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;
}
}
</pre>
<p> </p>
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;
}
}
</pre>
<p> </p>
3 楼
cloverprince
2009-01-20
用perl或者Python试试?总觉得这样简单的事情用Java有点杀鸡用牛刀了。
4 楼
ranyut
2009-01-21
感谢上面的朋友 分享你的完整代码 很有重用性
我只是针对我的需要写了个简单的而已
我只是针对我的需要写了个简单的而已
5 楼
kjj
2009-01-21
我以前也见过一个人,递归创建目录的时候,条件没有控制好,硬盘上存在了数十万个目录,删都删不了,最后也低格硬盘了!
6 楼
ranyut
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(); } } }
7 楼
yangyi
2009-02-09
抛出异常的爱 写道
江南白衣同志曾写过一个自动生成目录的代码在测试时..
无限循环了.
最后硬盘不得不格掉以删除一此超长的目录树.
无限循环了.
最后硬盘不得不格掉以删除一此超长的目录树.
我有一次也创建了删不掉,最后方法是用程序删除或Ant
程序上没有目录深度的限制
8 楼
vivid_gxp
2009-02-11
不知道搂住是什么意思。File.mkdirs不能实现么?
似乎没必要一级级的创建。(可能我没理解你的实际需求)
似乎没必要一级级的创建。(可能我没理解你的实际需求)
9 楼
wdlfellow
2009-02-14
抛出异常的爱 写道
江南白衣同志曾写过一个自动生成目录的代码在测试时..
无限循环了.
最后硬盘不得不格掉以删除一此超长的目录树.
无限循环了.
最后硬盘不得不格掉以删除一此超长的目录树.
呵呵,这种事故偶同事就遇到过,惨哦!
10 楼
男儿当
2009-02-14
抛出异常的爱 写道
江南白衣同志曾写过一个自动生成目录的代码在测试时..
无限循环了.
最后硬盘不得不格掉以删除一此超长的目录树.
无限循环了.
最后硬盘不得不格掉以删除一此超长的目录树.
最后白衣同志将此代码命名为 java 版 硬盘完美格式化 1.01版本 (1.00版本被 ‘抛出异常的爱’测出问题了)
11 楼
jieyee
2009-02-19
恩,学递归的时候就解决了。so easy
12 楼
xingqiliudehuanghun
2009-02-23
创建目录不喜欢用递归,很容易刹不住车。直接将需要创建的目录写成一条条的
字符串记录,然后逐个file.mkdirs()
字符串记录,然后逐个file.mkdirs()