`
ranyut
  • 浏览: 259844 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

实现批量迭代创建目录

    博客分类:
  • Java
阅读更多
公司项目要创建基础数据
一共有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();
		}	
	}
	
}
分享到:
评论
12 楼 xingqiliudehuanghun 2009-02-23  
创建目录不喜欢用递归,很容易刹不住车。直接将需要创建的目录写成一条条的
字符串记录,然后逐个file.mkdirs()
11 楼 jieyee 2009-02-19  
恩,学递归的时候就解决了。so easy
10 楼 男儿当 2009-02-14  
抛出异常的爱 写道
江南白衣同志曾写过一个自动生成目录的代码在测试时..
无限循环了.
最后硬盘不得不格掉以删除一此超长的目录树.


最后白衣同志将此代码命名为 java 版 硬盘完美格式化 1.01版本 (1.00版本被 ‘抛出异常的爱’测出问题了)


9 楼 wdlfellow 2009-02-14  
抛出异常的爱 写道
江南白衣同志曾写过一个自动生成目录的代码在测试时..
无限循环了.
最后硬盘不得不格掉以删除一此超长的目录树.


呵呵,这种事故偶同事就遇到过,惨哦!
8 楼 vivid_gxp 2009-02-11  
不知道搂住是什么意思。File.mkdirs不能实现么?

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

我有一次也创建了删不掉,最后方法是用程序删除或Ant
程序上没有目录深度的限制
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();
		}
	}

}
5 楼 kjj 2009-01-21  
我以前也见过一个人,递归创建目录的时候,条件没有控制好,硬盘上存在了数十万个目录,删都删不了,最后也低格硬盘了!
4 楼 ranyut 2009-01-21  
感谢上面的朋友 分享你的完整代码 很有重用性
我只是针对我的需要写了个简单的而已
3 楼 cloverprince 2009-01-20  
用perl或者Python试试?总觉得这样简单的事情用Java有点杀鸡用牛刀了。
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 &lt; 1) {
throw new IllegalArgumentException("未指定Excel文件名");
}
if (args.length &lt; 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 &lt; 1) {
return;
}
Sheet[] sheets = rwb.getSheets();
Sheet interfaceSheet = sheets[0];
for (int i = 0; i &lt; interfaceSheet.getRows(); i++) {
String fold1 = "";
for (int j = 0; j &lt;= row; j++) {
String fold = interfaceSheet.getCell(j, i).getContents()
.trim();
boolean ct = false;
fold1 += "\\" + fold;
if (fold1 != null &amp;&amp; !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()) &amp;&amp; !(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>
1 楼 抛出异常的爱 2009-01-20  
江南白衣同志曾写过一个自动生成目录的代码在测试时..
无限循环了.
最后硬盘不得不格掉以删除一此超长的目录树.

相关推荐

    Windows系统自动批量创建文件.zip

    在"Automatic-file-creation.bat"中,我们可以预期它包含了创建文件和文件夹的命令,例如`mkdir`(创建目录)和`echo`(输出文本到文件)。 `mkdir`命令用于创建新的目录。例如,如果我们希望创建名为"TestFolder...

    多个OU下批量创建AD账户并加入群组的脚本及模板

    在IT管理领域,尤其是Windows域环境的管理中,活动目录(Active Directory,简称AD)是不可或缺的一部分。批量处理任务,如创建用户账户和管理群组,对于管理员来说是非常常见的需求。在这种情况下,PowerShell,...

    批量修改文件名_c#批量修改文件名_

    2. **迭代文件**:要批量操作文件,首先需要遍历指定目录下的所有文件。Directory.GetFiles()方法可以获取指定目录下的所有文件路径,或者DirectoryInfo类的GetFiles()方法可以获取FileInfo对象的集合。 3. **字符...

    Struts2批量上传

    此外,还需要展示上传后的文件列表,这通常通过迭代`uploadFiles`列表并在页面上显示每个文件的信息来实现。 #### 五、总结 Struts2的批量上传功能为Web应用提供了高效且易于使用的文件处理方案。通过合理设计...

    python批量生成二维码工具

    Python批量生成二维码工具是一种高效的工作解决方案,特别是在你需要为大量数据创建独特的二维码时。这个自定义工具弥补了在线二维码生成器无法满足特定需求的不足。在本文中,我们将深入探讨Python如何实现这一功能...

    Delphi批量查找替换文件内容.rar

    1. 初始化:创建文件列表,可以来源于用户选择或预设目录。 2. 循环处理:遍历文件列表,打开每个文件,读取内容到内存。 3. 查找替换:对内存中的文本应用查找和替换规则。 4. 写回文件:将处理后的内容写回原文件...

    kettle批量解析多个xml文件

    6. **设置循环和增量处理**:为了批量处理多个XML文件,可以使用“作业”来包含这个转换,并通过“文件系统”步骤(如“获取文件名”或“文件存在”)来迭代文件夹中的所有XML文件。同时,可以使用“跳过已存在的...

    超级强大灵活的文件批量重命名工具

    批量重命名通常涉及到遍历指定目录下的所有文件,我们可以使用`os.walk()`函数来实现这一目标。`os.walk()`会遍历指定目录及其子目录,并返回一个生成器,每次迭代都会返回一个三元组(目录路径,该目录下的文件名列...

    java upload批量上传文件

    使用它,你需要在Servlet中解析`HttpServletRequest`,并创建一个`FileItemIterator`来迭代上传的文件。对于每个文件,你可以将其保存到服务器的指定位置。 3. **Spring MVC**: 如果你的项目基于Spring框架,...

    Android-Android资源文件批量分类处理

    5. **国际化支持**:批量处理多语言资源,创建并更新`res/values-*`目录。 要实现这样的自动化流程,开发者通常需要具备以下知识点: - **基本的Android开发环境**:包括Android Studio的使用,了解其项目结构和...

    易语言批量文本替换机

    2. 文件遍历:通过递归或者迭代的方式遍历指定目录下的所有文件,实现批量处理。 3. 字符串处理:包括字符串查找(SearchString)和替换(ReplaceString)等函数,这些是实现文本替换的核心。 4. 用户界面设计:...

    python脚本批量将gdb导出为shp(修改版).docx

    它返回一个生成器,每次迭代返回一个三元组(root, dirs, files),其中root表示当前目录路径,dirs是一个包含当前目录下所有子目录名称的列表,files是一个包含当前目录下非目录子文件的名称的列表。在此脚本中,`os....

    C# 批量修改文件名

    2. **遍历文件**:对获取到的文件数组进行迭代,对每个文件执行重命名操作。 ```csharp foreach (string filePath in files) { // 在这里处理每个文件 } ``` 3. **创建新的文件名**:根据规则生成新的文件名。...

    批量以文件夹名命名文件_照片批量命名_文件夹名命名文件_批量命名文件_以文件夹名批量命名文件_

    通过理解和应用这些知识点,我们可以创建出一个高效且用户友好的批量文件命名工具,帮助用户自动化处理文件命名工作,节省时间和精力。在实际编程过程中,不断优化和改进代码,使其更加高效和稳定,是提升用户体验的...

    ant批量打包脚本

    创建Ant批量打包脚本的基本步骤如下: 1. **安装和配置Ant**:首先确保系统已经安装了Java环境,并下载并配置了Ant。将Ant的bin目录添加到系统的PATH环境变量中。 2. **创建build.xml文件**:这是Ant脚本的主文件...

    批量修改(替换)文件名称

    这里,我们创建了一个新名称,格式为"NewName_1.new"、"NewName_2.new"等,并使用MoveTo方法将文件移动到同一目录下,从而实现重命名。 此外,如果你需要根据特定规则替换文件名中的某个部分,可以使用字符串操作...

    文件分类管理、批量重命名代码

    在Python中,我们可以使用os.rename()函数,或者shutil.move()函数配合os.listdir()来实现。Java中,可以使用java.io.File类的renameTo()方法。通常,我们会设计一个逻辑,比如添加前缀或后缀,替换特定字符串,或者...

    批量重命名小软件

    这些库提供迭代器或函数,可以逐个访问文件或目录。 5. **命名规则的设定**:批量重命名工具通常会允许用户定义命名规则,例如前缀、后缀、数字序列等。这可能涉及到字符串操作,如`std::string`类的`insert`, `...

    批量文件改名工具

    Delphi是一款强大的集成开发环境(IDE),它基于Object Pascal语言,提供了丰富的功能和组件来帮助开发者创建各种类型的应用程序,包括这个批量文件改名工具。 批量文件改名通常涉及到以下几个关键知识点: 1. ...

Global site tag (gtag.js) - Google Analytics