`
uujava0322
  • 浏览: 48229 次
  • 性别: 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经典代码(绝对值得收藏)"这个压缩包文件显然是一个集合了Java编程中的精华代码示例,旨在帮助开发者学习和理解Java编程的精髓。以下是一些可能涵盖的知识点: 1. **基础语法**:Java的基本数据类型、变量、...

    java经典语句,值得收藏的语句

    根据提供的文件信息,我们可以整理出一系列与Java及数据库操作相关的知识点。尽管标题提到的是“Java经典语句”,但实际内容更多地涉及了SQL语言在Oracle数据库中的应用。下面将对这些知识点进行详细的解释和总结: ...

    java语言十大经典案例

    这个“Java语言十大经典案例”涵盖了Java的核心特性,包括文件与流、多线程、网络编程以及异常处理等重要概念。以下是对这些知识点的详细说明: 1. **文件与流**: 文件操作是程序处理数据的基本方式。Java提供了...

    经典java小程序源代码合集

    6. **IO流**:Java的IO流库提供了读写文件、网络通信等功能。源代码可能包含对InputStream、OutputStream、Reader、Writer等类的使用。 7. **多线程**:Java提供了Thread类和Runnable接口来实现并发编程。合集中的...

    vb vf vc java MSDN集合下载!!经典!!

    【VB、VF、VC、Java与MSDN:编程语言与开发者资源】 VB(Visual Basic)是一种由微软开发的事件驱动的编程语言,以其...这个经典集合将助你深入理解这些编程语言,并提升你的开发能力,是值得分享和收藏的技术资料。

    java中国象棋单机象棋休闲游戏值得收藏

    游戏的界面通常选择Java Swing或JavaFX来构建,这些图形用户界面库能够创建直观而友好的用户操作体验。开发者需要编写棋盘和棋子的类,棋盘类负责维护棋子的位置信息,而棋子类则包含移动规则和状态信息,例如棋子...

    java手机游戏大全

    Java手机游戏大全主要涵盖的是基于Java技术开发的适用于早期移动设备的游戏。Java作为一种跨平台的编程语言,尤其在2G和3G时代的智能手机上广泛应用于游戏开发,为用户提供了丰富的娱乐体验。以下将详细介绍Java手机...

    反编译工具把Class文件转换为JAVA

    在Java编程语言中,开发者编写源代码(.java文件)并使用Java编译器(javac)将其编译成字节码(.class文件),这些字节码可以在Java虚拟机(JVM)上运行。然而,有时候我们可能需要查看或理解已编译的.class文件中...

    经典JAVA教程 非常值得一看 强烈推荐

    6. **输入/输出流**:Java I/O系统提供了丰富的类来处理数据的读写,包括文件操作、网络流和对象序列化,这对于处理数据传输和持久化至关重要。 7. **网络编程**:Java提供了Socket编程接口,用于创建客户端和...

    经典Java教程 Java2 参考大全(第4版)

    《经典Java教程 Java2 参考大全(第4版)》是一本全面且深入的Java编程指南,适合初学者及有一定经验的开发者。这本书涵盖了Java语言的核心概念、标准库的使用以及Java软件开发的高级技术,旨在帮助读者熟练掌握Java...

    java 之十大经典案例

    在Java编程语言的世界里,经典的案例是学习和理解其核心概念、设计模式和最佳实践的重要途径。这些案例不仅有助于新手入门,也能让有经验的开发者深入挖掘Java的潜力。以下是一些Java中的十大经典案例,它们涵盖了...

    java论坛经典整理

    以上只是部分可能涵盖的知识点,实际的“java论坛经典整理”可能还包含了更多关于JavaEE、JavaFX、Java 8新特性、单元测试、性能调优等内容,每个主题都值得深入探讨。通过学习这些精华帖子,无论是初学者还是资深...

    经典java实例源码

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、健壮性和安全性著称。这个"经典java实例源码"的压缩包很可能包含了各种各样的Java编程...所以,对于Java的学习者来说,这样的资源绝对值得深入研究和充分利用。

    JAVA 范例开发大全 源代码

    《JAVA 范例开发大全 源代码》是一本为Java开发者提供的宝贵资源,它包含了近1000个可运行的Java类,涵盖了Java编程...总之,《JAVA 范例开发大全 源代码》是一份宝贵的Java学习资源,值得每一个Java开发者收藏和学习。

    java经典问题算法及源代码

    资源文件“Java经典问题算法大全.doc”不仅详细解释了这些算法,而且提供示例和应用场景,帮助读者全面理解算法的基本思想、步骤和适用范围。文档中还可能包含对算法性能优化的讨论,如通过牺牲空间来换取更快的执行...

    java项目经典源码

    5. **IO/NIO**:Java的输入输出流和新IO(NIO)库用于文件操作和网络通信,源码中会涉及到文件读写、套接字通信等场景。 6. **网络编程**:Java的Socket编程可以创建客户端和服务端应用,源码中可能有TCP/UDP通信的...

    java项目开发案例大全

    文件"JAVA项目开发案例大全.pdf"很可能是一个详尽的教程或者指南,其中每个案例都会从需求分析、设计、编码到测试的全过程进行详细阐述,让你了解一个完整的项目生命周期。这种实践性的学习方式有助于你将所学理论...

    java经典面试大全.rar

    Java作为一门广泛使用的编程语言,其面试题库涵盖了众多领域,包括基础语法、面向对象、集合框架、多线程、网络编程、IO流、数据库操作、...Java经典面试大全中应该包含对这些主题的详细解析和实践案例,值得深入研究。

Global site tag (gtag.js) - Google Analytics