java创建目录或文件夹的方法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java创建目录或文件夹的方法?相关的知识,希望对你有一定的参考价值。

使用File类创建4个目录,再在4个目录中建立4个子目录,在每个目录中创建一个文本文件,而且打印每个文件的名字,,,,,,怎么做啊?

   1、File类的createNewFile根据抽象路径创建一个新的空文件,当抽象路径制定的文件存在时,创建失败

    2、File类的mkdir方法根据抽象路径创建目录

    3、File类的mkdirs方法根据抽象路径创建目录,包括创建必需但不存在的父目录

    4、File类的createTempFile方法创建临时文件,可以制定临时文件的文件名前缀、后缀及文件所在的目录,如果不指定目录,则存放在系统的临时文件夹下。

    5、除mkdirs方法外,以上方法在创建文件和目录时,必须保证目标文件不存在,而且父目录存在,否则会创建失败


示例代码如下:

package book.io;

import java.io.File;
import java.io.IOException;

public class CreateFileUtil 
   
    public static boolean createFile(String destFileName) 
        File file = new File(destFileName);
        if(file.exists()) 
            System.out.println("创建单个文件" + destFileName + "失败,目标文件已存在!");
            return false;
        
        if (destFileName.endsWith(File.separator)) 
            System.out.println("创建单个文件" + destFileName + "失败,目标文件不能为目录!");
            return false;
        
        //判断目标文件所在的目录是否存在
        if(!file.getParentFile().exists()) 
            //如果目标文件所在的目录不存在,则创建父目录
            System.out.println("目标文件所在目录不存在,准备创建它!");
            if(!file.getParentFile().mkdirs()) 
                System.out.println("创建目标文件所在目录失败!");
                return false;
            
        
        //创建目标文件
        try 
            if (file.createNewFile()) 
                System.out.println("创建单个文件" + destFileName + "成功!");
                return true;
             else 
                System.out.println("创建单个文件" + destFileName + "失败!");
                return false;
            
         catch (IOException e) 
            e.printStackTrace();
            System.out.println("创建单个文件" + destFileName + "失败!" + e.getMessage());
            return false;
        
    
   
   
    public static boolean createDir(String destDirName) 
        File dir = new File(destDirName);
        if (dir.exists()) 
            System.out.println("创建目录" + destDirName + "失败,目标目录已经存在");
            return false;
        
        if (!destDirName.endsWith(File.separator)) 
            destDirName = destDirName + File.separator;
        
        //创建目录
        if (dir.mkdirs()) 
            System.out.println("创建目录" + destDirName + "成功!");
            return true;
         else 
            System.out.println("创建目录" + destDirName + "失败!");
            return false;
        
    
   
   
    public static String createTempFile(String prefix, String suffix, String dirName) 
        File tempFile = null;
        if (dirName == null) 
            try
                //在默认文件夹下创建临时文件
                tempFile = File.createTempFile(prefix, suffix);
                //返回临时文件的路径
                return tempFile.getCanonicalPath();
             catch (IOException e) 
                e.printStackTrace();
                System.out.println("创建临时文件失败!" + e.getMessage());
                return null;
            
         else 
            File dir = new File(dirName);
            //如果临时文件所在目录不存在,首先创建
            if (!dir.exists()) 
                if (!CreateFileUtil.createDir(dirName)) 
                    System.out.println("创建临时文件失败,不能创建临时文件所在的目录!");
                    return null;
                
            
            try 
                //在指定目录下创建临时文件
                tempFile = File.createTempFile(prefix, suffix, dir);
                return tempFile.getCanonicalPath();
             catch (IOException e) 
                e.printStackTrace();
                System.out.println("创建临时文件失败!" + e.getMessage());
                return null;
            
        
    
   
    public static void main(String[] args) 
        //创建目录
        String dirName = "D:/work/temp/temp0/temp1";
        CreateFileUtil.createDir(dirName);
        //创建文件
        String fileName = dirName + "/temp2/tempFile.txt";
        CreateFileUtil.createFile(fileName);
        //创建临时文件
        String prefix = "temp";
        String suffix = ".txt";
        for (int i = 0; i < 10; i++) 
            System.out.println("创建了临时文件:"
                    + CreateFileUtil.createTempFile(prefix, suffix, dirName));
        
        //在默认目录下创建临时文件
        for (int i = 0; i < 10; i++) 
            System.out.println("在默认目录下创建了临时文件:"
                    + CreateFileUtil.createTempFile(prefix, suffix, null));
        
    

输出结果:


创建目录D:/work/temp/temp0/temp1成功!
目标文件所在目录不存在,准备创建它!
创建单个文件D:/work/temp/temp0/temp1/temp2/tempFile.txt成功!
创建了临时文件:D:work emp emp0 emp1 emp5171.txt
创建了临时文件:D:work emp emp0 emp1 emp5172.txt
创建了临时文件:D:work emp emp0 emp1 emp5173.txt
创建了临时文件:D:work emp emp0 emp1 emp5174.txt
创建了临时文件:D:work emp emp0 emp1 emp5175.txt
创建了临时文件:D:work emp emp0 emp1 emp5176.txt
创建了临时文件:D:work emp emp0 emp1 emp5177.txt
创建了临时文件:D:work emp emp0 emp1 emp5178.txt
创建了临时文件:D:work emp emp0 emp1 emp5179.txt
创建了临时文件:D:work emp emp0 emp1 emp5180.txt
在默认目录下创建了临时文件:C:Documents and SettingsAdministratorLocal SettingsTemp emp5181.txt
在默认目录下创建了临时文件:C:Documents and SettingsAdministratorLocal SettingsTemp emp5182.txt
在默认目录下创建了临时文件:C:Documents and SettingsAdministratorLocal SettingsTemp emp5183.txt
在默认目录下创建了临时文件:C:Documents and SettingsAdministratorLocal SettingsTemp emp5184.txt
在默认目录下创建了临时文件:C:Documents and SettingsAdministratorLocal SettingsTemp emp5185.txt
在默认目录下创建了临时文件:C:Documents and SettingsAdministratorLocal SettingsTemp emp5186.txt
在默认目录下创建了临时文件:C:Documents and SettingsAdministratorLocal SettingsTemp emp5187.txt
在默认目录下创建了临时文件:C:Documents and SettingsAdministratorLocal SettingsTemp emp5188.txt
在默认目录下创建了临时文件:C:Documents and SettingsAdministratorLocal SettingsTemp emp5189.txt
在默认目录下创建了临时文件:C:Documents and SettingsAdministratorLocal SettingsTemp emp5190.txt

参考技术A 辛辛苦苦写了,你起码也给点分吧。。。
import java.io.*;

public class createFile

public static void main(String args[]) throws Exception
String[] paths = "A","B","C","D";
String[] names = "a.txt","b.txt","c.txt","d.txt";
File[] files = new File[4];
for(int i=0;i<4;i++)
files[i] = new File(paths[i],names[i]);
files[i].getParentFile().mkdirs();
files[i].createNewFile();
System.out.println(files[i].getName());


本回答被提问者采纳

java文件操作方法大全

文章目录

方法

	mkdir,//创建目录
	strWriteFile,//字符串写入文件
	deleteFolder,//删除文件夹
	copyDirectiory,//拷贝目录
	copyFile,//拷贝文件
	getDocumentList,//获取文件夹列表或文件列表
	readTxtToStr,//读取txt文件

具体实现

public class FileHelper 

	private static final Logger logger = LoggerFactory.getLogger(FileHelper.class);
	

	/**
	 * 创建目录
	 * 
	 * @author qitianersheng
	 */
	public static String mkdir(String dirPath) 
		File file = new File(dirPath);
		if (!file.exists() && !file.mkdirs()) 
			logger.error("创建文件夹失败,请查看相关权限");
			return "fail";
		
		return "success";
	

	/**
	 * 字符串写入文件
	 * 
	 * @author qitianersheng
	 */
	public static void strWriteFile(String str, String path, String fileName) 
		File folder = new File(path);
		if (!folder.exists()) 
			folder.mkdirs();
		
		path = path + fileName;
		logger.info("File storage path:", path);
		File txt = new File(path);
		try (FileOutputStream fos = new FileOutputStream(txt)) 
			if (!txt.exists()) 
				txt.createNewFile();
			
			byte bytes[] = new byte[512];
			bytes = str.getBytes();
			int b = bytes.length;
			fos.write(bytes, 0, b);
		 catch (FileNotFoundException e) 
			logger.error("FileNotFound:", e);
		 catch (IOException e) 
			logger.error("IOException:", e);
		
	

	/**
	 * 删除文件夹
	 * @author qitianersheng
	 */
	public static void deleteFolder(File file) 
		if (!file.exists()) 
			return;
		
		if (file.isFile()) 
			file.delete();
		 else if (file.isDirectory()) 
			for (File f : file.listFiles()) 
				deleteFolder(f);
			
			file.delete();
		
	

	/**
	 * 拷贝文件夹
	 * 
	 * @author qitianersheng
	 */
	public static void copyDirectiory(String sourceDir, String targetDir) throws IOException 
		// 新建目标目录
		(new File(targetDir)).mkdirs();
		// 获取源文件夹当前下的文件或目录
		File[] file = (new File(sourceDir)).listFiles();
		for (int i = 0; i < file.length; i++) 
			if (file[i].isFile()) 
				// 源文件
				File sourceFile = file[i];
				// 目标文件
				File targetFile = new File(new File(targetDir).getAbsolutePath() + File.separator + file[i].getName());
				copyFile(sourceFile, targetFile);
			
			if (file[i].isDirectory()) 
				// 准备复制的源文件夹
				String dir1 = sourceDir + "/" + file[i].getName();
				// 准备复制的目标文件夹
				String dir2 = targetDir + "/" + file[i].getName();
				copyDirectiory(dir1, dir2);
			
		
	

	/**
	 * 拷贝文件
	 * 
	 * @author qitianersheng
	 */
	private static void copyFile(File sourceFile, File targetFile) 
		// 新建文件输入流并对它进行缓冲
		try (FileInputStream input = new FileInputStream(sourceFile);
				BufferedInputStream inBuff = new BufferedInputStream(input);
				// 新建文件输出流并对它进行缓冲
				FileOutputStream output = new FileOutputStream(targetFile);
				BufferedOutputStream outBuff = new BufferedOutputStream(output)) 
			// 缓冲数组
			byte[] b = new byte[1024 * 5];
			int len;
			while ((len = inBuff.read(b)) != -1) 
				outBuff.write(b, 0, len);
			
			// 刷新此缓冲的输出流
			outBuff.flush();
		 catch (IOException e) 
			logger.error("copyFile()  error:", e);
		
	

	/**
	 * 获取文件夹列表或文件列表
	 * 
	 * @return List<String>
	 * @author qitianersheng
	 */
	public static List<String> getDocumentList(String path, Boolean isFolder) 
		List<String> list = new ArrayList<>();
		File baseFile = new File(path);
		if (baseFile.isFile() || !baseFile.exists()) 
			return list;
		
		File[] files = baseFile.listFiles();
		if (isFolder) 
			for (File file : files) 
				if (file.isDirectory()) 
					list.add(file.getName());
				
			
		 else 
			for (File file : files) 
				if (file.isFile()) 
					list.add(file.getName());
				
			
		
		return list;
	

	/**
	 * 读取txt文件
	 * @author qitianersheng
	 */
	public static String readTxtToStr(String path) 
		StringBuffer buffer = new StringBuffer();
		try (BufferedReader bf = new BufferedReader(new FileReader(path))) 
			String s = null;
			while ((s = bf.readLine()) != null) // 使用readLine方法,一次读一行
				buffer.append(s.trim());
			
		 catch (Exception e) 

		
		return buffer.toString();

	
	


  • 文章是个人知识点整理总结,如有错误和不足之处欢迎指正。
  • 如有疑问、或希望与笔者探讨技术问题(包括但不限于本章内容),欢迎添加笔者微信(o815441)。请备注“探讨技术问题”。欢迎交流、一起进步。

以上是关于java创建目录或文件夹的方法?的主要内容,如果未能解决你的问题,请参考以下文章

Java IO流中 File文件对象与Properties类

java文件操作方法大全

Java学习笔记6.3.1 文件操作 - File类

java File类

java判断文件是不是存在不存在就创建

Java:如何为多个文件或目录创建种子文件?