package com;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class TestCreateFile {
//将所有创建的文件和目录都放入该文件夹中
private static final String jieGuoMuLu="result33";
//将所有的输出信息通过,该对相输出到指定的文件中
private static BufferedWriter bufferedWriter=null;
static{
try {
bufferedWriter=new BufferedWriter(
new FileWriter(new File("运行结果说明.txt"), true));
} catch (Exception e) {
e.printStackTrace();
}
} //统计目录数
private int muLuAmount=0;
//统计空目录数
private int nullFolder=0; //统计创建成功的文件数
private int wenJianAmount=0;
//统计创建失败的文件数
private int failureFileAmount=0;
//统计相同的文件数
private int sameFileAmount=0;
//定义的2个list集合,使用了泛型,分别存储将指定url分割的mulu和文件名
private List<String> muLuList=null;
private List<String> wenJianList=null;
/**
* 将制定的文件读入list中
* @param txtFileUrl
* @return fileUrlList(存储的url)
*/
public List<String> getFileUrlList(String txtFileUrl){
List<String> fileUrlList=new ArrayList<String>();
try {
BufferedReader reader = new BufferedReader(
new InputStreamReader(new FileInputStream(txtFileUrl)));
String str = null;
while ((str = reader.readLine()) != null) {
fileUrlList.add(str);
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
return fileUrlList;
}
/**
* 将指定的list,差分成2个list
* 分别放入私有属性中
* @param fileUrlList
*/
public void spiltStringToTwoList(List<String> fileUrlList){
//实例化这2个属性
this.muLuList=new ArrayList<String>();
this.wenJianList=new ArrayList<String>();
for (Iterator<String> ite = fileUrlList.iterator(); ite.hasNext();) {
//取出一个路径进行判断
String url = ite.next();
String[] subUrlArray=url.split("/"); if(subUrlArray[subUrlArray.length-1].indexOf('.') < 0){
//该路径没有文件
String str="";
for (int i = 0; i < subUrlArray.length; i++) {
str=str+"/"+subUrlArray[i];
}
this.muLuList.add(str);
//跟没有文件的空目录给一个没有“.”的字符串
this.wenJianList.add("kongMuLu");
//统计空目录数
this.nullFolder++;
}else{
//该路径有文件
String str="";
for (int i = 0; i < subUrlArray.length-1; i++) {
str=str+"/"+subUrlArray[i];
}
this.muLuList.add(str);
this.wenJianList.add(subUrlArray[subUrlArray.length-1]); }
}
}
public void createFile(List<String> muLuList,List<String> wenJianList){
File file=null;
for(int i=0; i<wenJianList.size(); i++){
if(wenJianList.get(i).indexOf('.') >= 0){
//“jieGuoMuLu”是静态常量
file=new File(jieGuoMuLu+muLuList.get(i),wenJianList.get(i));
//如果该文件夹不存在就创建
if( !file.getParentFile().exists() ){
file.getParentFile().mkdirs();
//统计文件夹数
this.muLuAmount++;
}
//如果该文件不存在,就创建
if(!file.exists()){
try {
//创建文件
file.createNewFile();
//统计文件数
this.wenJianAmount++;
} catch (IOException e) {
//统计创建失败的文件数
this.failureFileAmount++;
//向指定文件中,输出创建失败的文件的文件名
try {
bufferedWriter.write(
"@_#=第"+(i+1)+"文件创建失败-->"+wenJianList.get(i)+"/n");
} catch (IOException e1) {
e1.printStackTrace();
}
System.out.println("@_#=第"+(i+1)+"文件创建失败-->"+wenJianList.get(i));
}
}else{
//统计相同的文件名的数量
this.sameFileAmount++;
//向指定文件中,输出重复文件的文件名
try {
bufferedWriter.write(
"该文件重复了=====>"+wenJianList.get(i)+"/n");
} catch (IOException e1) {
e1.printStackTrace();
}
System.out.println("该文件重复了=====>"+wenJianList.get(i));
}
}else{
//“jieGuoMuLu”是静态常量
file=new File(jieGuoMuLu+muLuList.get(i),wenJianList.get(i));
//只创建文件夹,不创文件,因为该文件名是我自己给的
if( !file.getParentFile().exists() ){
file.getParentFile().mkdirs();
//统计文件夹数
this.muLuAmount++;
}
}
}
}
/**
* 打印统计数据
*/
public void printInfomation(){
//向指定文件中,输出统计的数据
try {
bufferedWriter.write("文件夹的数量="+this.muLuAmount+"/n");
bufferedWriter.write("空目录数量="+this.nullFolder+"/n");
bufferedWriter.write("统计创建成功的文件数="+this.wenJianAmount+"/n");
bufferedWriter.write("统计创建失败的文件数="+this.failureFileAmount+"/n");
bufferedWriter.write("统计相同的文件数="+this.sameFileAmount+"/n");
} catch (IOException e1) {
e1.printStackTrace();
}
//打印统计目录数
System.out.println("this.muLuAmount="+this.muLuAmount);//统计空目录数
System.out.println("this.nullFolder="+this.nullFolder);//统计创建成功的文件数
System.out.println("this.wenJianAmount="+this.wenJianAmount);//统计创建失败的文件数
System.out.println("this.failureFileAmount="+this.failureFileAmount);//统计相同的文件数
System.out.println("this.sameFileAmount="+this.sameFileAmount); //关闭流(静态的)
this.closeBufferedWriter(TestCreateFile.bufferedWriter);
}
/**
* 关闭缓冲流
* @param writer
*/
public void closeBufferedWriter(BufferedWriter writer){
try {
//清空缓冲流
writer.flush();
//关闭
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
//实例化
TestCreateFile t=new TestCreateFile();
//传入一个文件名,该文件中装在的所有的url
List<String> list=t.getFileUrlList("file3.txt");
//将所有的rul的目录和文件名分割
t.spiltStringToTwoList(list);
//创建文件和文件夹
t.createFile(t.muLuList,t.wenJianList);
//想控制台打印统计数量
t.printInfomation();
}}
java 路径 创建文件夹 java在指定路径生成文件
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章