`
uujava0322
  • 浏览: 47656 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类

Java文件操作大全(绝对的经典,值得收藏!)

阅读更多
  Java文件操作大全 
 //1.创建文件夹 
	//import java.io.*; 
	File myFolderPath = new File(str1); 
	try { 
		if (!myFolderPath.exists()) { 
		   myFolderPath.mkdir(); 
		} 
	} 
	catch (Exception e) { 
		System.out.println("新建目录操作出错"); 
		e.printStackTrace(); 
	}  

	//2.创建文件 
	//import java.io.*; 
	File myFilePath = new File(str1); 
	try { 
		if (!myFilePath.exists()) { 
			myFilePath.createNewFile(); 
		} 
		FileWriter resultFile = new FileWriter(myFilePath); 
		PrintWriter myFile = new PrintWriter(resultFile); 
		myFile.println(str2); 
		resultFile.close(); 
	} 
	catch (Exception e) { 
		System.out.println("新建文件操作出错"); 
		e.printStackTrace(); 
	}  

	//3.删除文件 
	//import java.io.*; 
	File myDelFile = new File(str1); 
	try { 
		myDelFile.delete(); 
	} 
	catch (Exception e) { 
		System.out.println("删除文件操作出错"); 
		e.printStackTrace(); 
	}  

	//4.删除文件夹 
	//import java.io.*; 
	File delFolderPath = new File(str1); 
	try { 
		delFolderPath.delete(); //删除空文件夹 
	} 
	catch (Exception e) { 
		System.out.println("删除文件夹操作出错"); 
		e.printStackTrace(); 
	}  

	//5.删除一个文件下夹所有的文件夹 
	//import java.io.*; 
	File delfile=new File(str1); 
	File[] files=delfile.listFiles(); 
	for(int i=0;i<files.length;i++){ 
		if(files[i].isDirectory()){ 
			files[i].delete(); 
		} 
	}   
	 
	//6.清空文件夹 
	//import java.io.*; 
	File delfilefolder=new File(str1); 
	try { 
		if (!delfilefolder.exists()) { 
			delfilefolder.delete(); 
		} 
		delfilefolder.mkdir(); 
	} 
	catch (Exception e) { 
		System.out.println("清空目录操作出错"); 
		e.printStackTrace(); 
	}  

	//7.读取文件 
	//import java.io.*; 
	// 逐行读取数据 
	FileReader fr = new FileReader(str1); 
	BufferedReader br = new BufferedReader(fr); 
	String str2 = br.readLine(); 
	while (str2 != null) { 
		str3 
		str2 = br.readLine(); 
	} 
	br.close(); 
	fr.close();  

	//8.写入文件 
	//import java.io.*; 
	// 将数据写入文件 
	try { 
		FileWriter fw = new FileWriter(str1); 
		fw.write(str2); 
		fw.flush(); 
		fw.close();  
	} catch (IOException e) { 
		e.printStackTrace(); 
	} 

	//9.写入随机文件 
	//import java.io.*; 
	try { 
		RandomAcessFile logFile=new RandomAcessFile(str1,"rw"); 
		long lg=logFile.length(); 
		logFile.seek(str2); 
		logFile.writeByte(str3); 
	}catch(IOException ioe){ 
		System.out.println("无法写入文件:"+ioe.getMessage()); 
	}  

	//10.读取文件属性 
	//import java.io.*; 
	// 文件属性的取得 
	File f = new File(str1); 
	if (af.exists()) { 
		System.out.println(f.getName() + "的属性如下: 文件长度为:" + f.length()); 
		System.out.println(f.isFile() ? "是文件" : "不是文件"); 
		System.out.println(f.isDirectory() ? "是目录" : "不是目录"); 
		System.out.println(f.canRead() ? "可读取" : "不"); 
		System.out.println(f.canWrite() ? "是隐藏文件" : ""); 
		System.out.println("文件夹的最后修改日期为:" + new Date(f.lastModified())); 
		} else { 
		System.out.println(f.getName() + "的属性如下:"); 
		System.out.println(f.isFile() ? "是文件" : "不是文件"); 
		System.out.println(f.isDirectory() ? "是目录" : "不是目录"); 
		System.out.println(f.canRead() ? "可读取" : "不"); 
		System.out.println(f.canWrite() ? "是隐藏文件" : ""); 
		System.out.println("文件的最后修改日期为:" + new Date(f.lastModified())); 
	} 
	if(f.canRead()){ 
		str2 
	} 
	if(f.canWrite()){ 
		str3 
	} 

	//11.写入属性 
	//import java.io.*; 
	File filereadonly=new File(str1); 
	try { 
		boolean b=filereadonly.setReadOnly(); 
	} 
	catch (Exception e) { 
		System.out.println("拒绝写访问:"+e.printStackTrace()); 
	}  

	//12.枚举一个文件夹中的所有文件 
	//import java.io.*; 
	//import java.util.*; 
	LinkedList<String> folderList = new LinkedList<String>(); 
	folderList.add(str1); 
	while (folderList.size() > 0) { 
		File file = new File(folderList.peek()); 
		folderList.removeLast(); 
		File[] files = file.listFiles(); 
		ArrayList<File> fileList = new ArrayList<File>(); 
		for (int i = 0; i < files.length; i++) { 
			if (files[i].isDirectory()) { 
				folderList.add(files[i].getPath()); 
			} else { 
				fileList.add(files[i]); 
			} 
		} 
		for (File f : fileList) { 
			str2=f.getAbsoluteFile(); 
			str3 
		} 
	} 

	//13.复制文件夹  
	//import java.io.*; 
	//import java.util.*; 
	LinkedList<String> folderList = new LinkedList<String>(); 
	folderList.add(str1); 
	LinkedList<String> folderList2 = new LinkedList<String>(); 
	folderList2.add(str2+ str1.substring(str1.lastIndexOf("\\"))); 
	while (folderList.size() > 0) { 
		(new File(folderList2.peek())).mkdirs(); // 如果文件夹不存在 则建立新文件夹 
		File folders = new File(folderList.peek()); 
		String[] file = folders.list(); 
		File temp = null; 
		try { 
			for (int i = 0; i < file.length; i++) { 
				if (folderList.peek().endsWith(File.separator)) { 
					temp = new File(folderList.peek() + File.separator 
					+ file[i]); 
				} else { 
					temp = new File(folderList.peek() + File.separator + file[i]); 
				} 
				if (temp.isFile()) { 
					FileInputStream input = new FileInputStream(temp); 
					FileOutputStream output = new FileOutputStream( 
					folderList2.peek() + File.separator + (temp.getName()).toString()); 
					byte[] b = new byte[5120]; 
					int len; 
					while ((len = input.read(b)) != -1) { 
						output.write(b, 0, len); 
					} 
					output.flush(); 
					output.close(); 
					input.close(); 
				} 
				if (temp.isDirectory()) {// 如果是子文件夹 
					for (File f : temp.listFiles()) { 
						if (f.isDirectory()) { 
							folderList.add(f.getPath()); 
							folderList2.add(folderList2.peek() 
							+ File.separator + f.getName()); 
						} 
					} 
				} 
			} 
		} catch (Exception e) { 
		//System.out.println("复制整个文件夹内容操作出错"); 
			e.printStackTrace(); 
		} 
		folderList.removeFirst(); 
		folderList2.removeFirst(); 
	} 

	//14.复制一个文件夹下所有的文件夹到另一个文件夹下 
	//import java.io.*; 
	//import java.util.*; 
	File copyfolders=new File(str1); 
	File[] copyfoldersList=copyfolders.listFiles(); 
	for(int k=0;k<copyfoldersList.length;k++){ 
		if(copyfoldersList[k].isDirectory()){ 
			ArrayList<String>folderList=new ArrayList<String>(); 
			folderList.add(copyfoldersList[k].getPath()); 
			ArrayList<String>folderList2=new ArrayList<String>(); 
			folderList2.add(str2+"/"+copyfoldersList[k].getName()); 
			for(int j=0;j<folderList.length;j++){ 
				 (new File(folderList2.get(j))).mkdirs(); //如果文件夹不存在 则建立新文件夹 
				 File folders=new File(folderList.get(j)); 
				 String[] file=folders.list(); 
				 File temp=null; 
				 try { 
					 for (int i = 0; i < file.length; i++) { 
						 if(folderList.get(j).endsWith(File.separator)){ 
							 temp=new File(folderList.get(j)+"/"+file[i]); 
						 } else { 
							 temp=new File(folderList.get(j)+"/"+File.separator+file[i]); 
						 } 
						 FileInputStream input = new FileInputStream(temp); 
						 if(temp.isFile()){ 
							 FileInputStream input = new FileInputStream(temp); 
							 FileOutputStream output = new FileOutputStream(folderList2.get(j) + "/" + (temp.getName()).toString()); 
							 byte[] b = new byte[5120]; 
							 int len; 
							 while ( (len = input.read(b)) != -1) { 
								 output.write(b, 0, len); 
							 } 
							 output.flush(); 
							 output.close(); 
							 input.close(); 
						 } 
						 if(temp.isDirectory()){//如果是子文件夹 
							 folderList.add(folderList.get(j)+"/"+file[i]); 
							 folderList2.add(folderList2.get(j)+"/"+file[i]); 
						 } 
					 } 
				 } 
				 catch (Exception e) { 
					 System.out.println("复制整个文件夹内容操作出错"); 
					 e.printStackTrace(); 
				 } 
			} 
		} 
	} 

	//15.移动文件夹 
	//import java.io.*; 
	//import java.util.*; 
	LinkedList<String> folderList = new LinkedList<String>(); 
	folderList.add(str1); 
	LinkedList<String> folderList2 = new LinkedList<String>(); 
	folderList2.add(str2 + str1.substring(str1.lastIndexOf("\\"))); 
	while (folderList.size() > 0) { 
		(new File(folderList2.peek())).mkdirs(); // 如果文件夹不存在 则建立新文件夹 
		File folders = new File(folderList.peek()); 
		String[] file = folders.list(); 
		File temp = null; 
		try { 
			for (int i = 0; i < file.length; i++) { 
				if (folderList.peek().endsWith(File.separator)) { 
					temp = new File(folderList.peek() + File.separator + file[i]); 
				} else { 
					temp = new File(folderList.peek() + File.separator + file[i]); 
				} 
				if (temp.isFile()) { 
					FileInputStream input = new FileInputStream(temp); 
					FileOutputStream output = new FileOutputStream( 
					folderList2.peek() + File.separator + (temp.getName()).toString()); 
					byte[] b = new byte[5120]; 
					int len; 
					while ((len = input.read(b)) != -1) { 
						output.write(b, 0, len); 
					} 
					output.flush(); 
					output.close(); 
					input.close(); 
					if (!temp.delete()) 
					System.out.println("删除单个文件操作出错!"); 
				} 
				if (temp.isDirectory()) {// 如果是子文件夹 
					for (File f : temp.listFiles()) { 
						if (f.isDirectory()) { 
							folderList.add(f.getPath()); 
							folderList2.add(folderList2.peek() + File.separator + f.getName()); 
						} 
					} 
				} 
			} 
		} catch (Exception e) { 
			// System.out.println("复制整个文件夹内容操作出错"); 
			e.printStackTrace(); 
		} 
		folderList.removeFirst(); 
		folderList2.removeFirst(); 
	} 
	File f = new File(str1); 
	if (!f.delete()) { 
		for (File file : f.listFiles()) { 
			if (file.list().length == 0) { 
				System.out.println(file.getPath()); 
				file.delete(); 
			} 
		} 
	} 
	//16.移动一个文件夹下所有的文件夹到另一个目录下 
	//import java.io.*; 
	//import java.util.*; 
	File movefolders=new File(str1); 
	File[] movefoldersList=movefolders.listFiles(); 
	for(int k=0;k<movefoldersList.length;k++){ 
		if(movefoldersList[k].isDirectory()){ 
			ArrayList<String>folderList=new ArrayList<String>(); 
			folderList.add(movefoldersList[k].getPath()); 
			ArrayList<String>folderList2=new ArrayList<String>(); 
			folderList2.add(str2+"/"+movefoldersList[k].getName()); 
			for(int j=0;j<folderList.length;j++){ 
				 (new File(folderList2.get(j))).mkdirs(); //如果文件夹不存在 则建立新文件夹 
				 File folders=new File(folderList.get(j)); 
				 String[] file=folders.list(); 
				 File temp=null; 
				 try { 
					 for (int i = 0; i < file.length; i++) { 
						 if(folderList.get(j).endsWith(File.separator)){ 
							 temp=new File(folderList.get(j)+"/"+file[i]); 
						 } 
						 else{ 
							 temp=new File(folderList.get(j)+"/"+File.separator+file[i]); 
						 } 
						 FileInputStream input = new FileInputStream(temp); 
						 if(temp.isFile()){ 
							 FileInputStream input = new FileInputStream(temp); 
							 FileOutputStream output = new FileOutputStream(folderList2.get(j) + "/" + (temp.getName()).toString()); 
							 byte[] b = new byte[5120]; 
							 int len; 
							 while ( (len = input.read(b)) != -1) { 
								 output.write(b, 0, len); 
							 } 
							 output.flush(); 
							 output.close(); 
							 input.close(); 
							 temp.delete(); 
						 } 
						 if(temp.isDirectory()){//如果是子文件夹 
							 folderList.add(folderList.get(j)+"/"+file[i]); 
							 folderList2.add(folderList2.get(j)+"/"+file[i]); 
						 } 
					 } 
				 } 
				 catch (Exception e) { 
					 System.out.println("复制整个文件夹内容操作出错"); 
					 e.printStackTrace(); 
				 } 
			} 
			movefoldersList[k].delete(); 
		} 
	} 

	//17.以一个文件夹的框架在另一个目录创建文件夹和空文件 
	//import java.io.*; 
	//import java.util.*; 
	boolean b=false;//不创建空文件 
	ArrayList<String>folderList=new ArrayList<String>(); 
	folderList.add(str1); 
	ArrayList<String>folderList2=new ArrayList<String>(); 
	folderList2.add(str2); 
	for(int j=0;j<folderList.length;j++){ 
		(new File(folderList2.get(j))).mkdirs(); //如果文件夹不存在 则建立新文件夹 
		File folders=new File(folderList.get(j)); 
		String[] file=folders.list(); 
		File temp=null; 
		try { 
			for (int i = 0; i < file.length; i++) { 
				if(folderList.get(j).endsWith(File.separator)){ 
					temp=new File(folderList.get(j)+"/"+file[i]); 
				} 
				else{ 
					temp=new File(folderList.get(j)+"/"+File.separator+file[i]); 
				} 
				FileInputStream input = new FileInputStream(temp); 
				if(temp.isFile()){ 
					if (b) temp.createNewFile(); 
				} 
				if(temp.isDirectory()){//如果是子文件夹 
					folderList.add(folderList.get(j)+"/"+file[i]); 
					folderList2.add(folderList2.get(j)+"/"+file[i]); 
				} 
			} 
		} 
		catch (Exception e) { 
			System.out.println("复制整个文件夹内容操作出错"); 
			e.printStackTrace(); 
		} 
	} 

	//18.复制文件 
	//import java.io.*; 
	 int bytesum = 0; 
	 int byteread = 0; 
	 File oldfile = new File(str1); 
	 try { 
	 if (oldfile.exists()) { //文件存在时 
	 FileInputStream inStream = new FileInputStream(oldfile); //读入原文件 
	 FileOutputStream fs = new FileOutputStream(new File(str2,oldfile.getName())); 
	 byte[] buffer = new byte[5120]; 
	 int length; 
	 while ( (byteread = inStream.read(buffer)) != -1) { 
	 bytesum += byteread; //字节数 文件大小 
	 System.out.println(bytesum); 
	 fs.write(buffer, 0, byteread); 
	 } 
	 inStream.close(); 
	 } 
	 } 
	 catch (Exception e) { 
	 System.out.println("复制单个文件操作出错"); 
	 e.printStackTrace(); 
	 }  

	//19.复制一个文件夹下所有的文件到另一个目录 
	//import java.io.*; 
	File copyfiles=new File(str1); 
	File[] files=copyfiles.listFiles(); 
	for(int i=0;i<files.length;i++){ 
		if(!files[i].isDirectory()){ 
			int bytesum = 0; 
			int byteread = 0; 
			try { 
				InputStream inStream = new FileInputStream(files[i]); //读入原文件 
				FileOutputStream fs = new FileOutputStream(new File(str2,files[i].getName()); 
				byte[] buffer = new byte[5120]; 
				int length; 
				while ( (byteread = inStream.read(buffer)) != -1) { 
					bytesum += byteread; //字节数 文件大小 
					System.out.println(bytesum); 
					fs.write(buffer, 0, byteread); 
				} 
				inStream.close(); 
			} catch (Exception e) { 
				System.out.println("复制单个文件操作出错"); 
				e.printStackTrace(); 
			} 
		} 
	}  

	//20.提取扩展名 
	String str2=str1.substring(str1.lastIndexOf(".")+1);
10
7
分享到:
评论
5 楼 lshhjxlj 2015-10-26  
确实不错,感谢楼主分享!
4 楼 dx919 2011-08-11  
嘿嘿  挺好的
3 楼 lsanmu 2011-05-17  
可以看看commons-io包
2 楼 Caedmon 2011-05-17  
可以当工具类用用,省了不少功夫!
1 楼 iuf6853 2011-05-17  
感谢如此好的文章

相关推荐

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    JAVA上百实例源码以及开源项目源代码

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    JAVA分页完美解决方案

    JAVA分页是个经典问题,本人从网上搜集资料,并通过编程,较为完美地决地了这个问题,源码已经上传CSDN,值得下载! 我的方案是用两个TAG完成分页显示数据和页码,一个TAG(displaytag)专门显示数据,一个TAG...

    JAVA分页完美解决方案修订版

    JAVA分页是个经典问题,本人从网上搜集资料,并通过编程,较为完美地决地了这个问题,浏览、增加、删除、修改、查看、搜索都可以回到原来的页码,源码已经上传CSDN,值得下载! 我的方案是用两个TAG完成分页显示数据...

    java面试题

    本文件包含了java面试题中比较经典的一些题目,很值得一看

    2009年最有价值的知识.rar

    │ 140个绝对经典的电脑技巧绝对值得收藏.txt │ DOS命令大全(经典收藏).txt │ QQ空间免费播放器代码和使用方法.txt │ SCF文件应用.txt │ Windows 系统盘下 system32 下的文件.txt │ Windows系统“无法打开”...

    CSDN文档中心.rar

    CSDN文档中心.rar,很经典的JAVA学习文档,简单易学,很实用。包括了EJB,J2SE,J2EE,JDBC,XML and CORBA,JSP,OO,Security and Performance,Multimedia,Services等,很值得一看。

    常用正则表达式汇总文档

    常用正则表达式汇总,非常值得收藏,网上有很多vi的在线手册,你可以访问他们以获得更加完整的信息。

    iBATIS实战

    书的最后给出了一个设计优雅、层次清晰的示例程序JGameStore,该示例涵盖全书的大部分知识点,可以作为iBATIS学习和Web开发的经典案例,非常值得深入研究。 本书既可为广大的开发人员(不仅仅是Web应用程序开发人员)...

    基于SpringBoot+Vue的简历系统(源码+部署说明+系统介绍).zip

    该系统的源码、部署说明和系统介绍已经打包成一个zip文件,方便用户使用。 该系统的前端部分采用了Vue框架进行开发,主要实现了用户界面和交互,包括登录、注册、个人信息设置、简历编辑和预览等功能。而后端部分则...

    PowerWord.exe

    2009年6月,对应Symbian、iPhone、Android和Java的等多个手机平台的手机版金山词霸3.0正式发布,金山词霸进军移动互联网领域。 2008年 2008年5月,金山携手谷歌联合推出《谷歌金山词霸合作版》,一款全免费、灵巧...

    Android应用开发揭秘pdf高清版

    C++(NDK)和Python、Lua等脚本语言(AndroidScriptingEnvironment)来开发Android应用,《Android应用开发揭秘》实战性强,书中的每个知识点都有配精心设计的示例,尤为值得一提的是,它还以迭代的方式重现了各种...

    砖块游戏源码J2ME

    这是一款很经典的砖块游戏源码J2ME,该游戏相信大家都玩过的砖块游戏,游戏的玩法也很简单,游戏源码这是基于j2ME实现的,会生成有jad文件,直接下载到手机就可以玩,值得大家的借鉴与学习。

Global site tag (gtag.js) - Google Analytics