- 浏览: 67977 次
- 性别:
- 来自: 长春
最新评论
-
Aaron2010:
我现在也碰到同样的问题,重命名webapps下面的文件夹名称, ...
关于renameTo方法的疑惑 -
fool2011:
用了啊,谢谢
关于计算java程序运行时间 -
qq136134525:
高手,谢谢分享。。!
实现的一个简单的TCP连接池 -
弃天笑:
关注一下~~~
关于计算java程序运行时间 -
gongsy:
大大方方
实现的一个简单的TCP连接池
ps: 根据zym16621提的意见修改了一下代码,并在附件里添加了工程文件和jar包。
前几天仔细看了看java的I/O操作,呵呵。就写了一个操作文件的类包,功能有创建文件或目录,删除文件或目录,复制文件或目录,移动文件或目录,设置文件或目录属性,查看文件或目录大小。呵呵,功能比较简单,源代码为:
创建:
删除:
复制:
移动:本来想用renameTo方法来实现的,但是发现这个方法有些问题。在我的博客里写明了,希望大家能指点一下。
查看,设置属性:
查看大小:
呵呵,第一次修改完后就是这些了,可能还有些问题考虑的不全面。希望大家能多提意见。
前几天仔细看了看java的I/O操作,呵呵。就写了一个操作文件的类包,功能有创建文件或目录,删除文件或目录,复制文件或目录,移动文件或目录,设置文件或目录属性,查看文件或目录大小。呵呵,功能比较简单,源代码为:
创建:
package fileOperation; import java.io.File; /**创建一个新的文件或目录 * @author wakin * */ public class Create { /** * 根据路径名创建文件 * @param filePath 路径名 * @return 当创建文件成功后,返回true,否则返回false. * */ public boolean createFile(String filePath) { boolean isDone = false; File file = new File(filePath); if(file.exists()) throw new RuntimeException("File: "+filePath+" is already exist"); try { isDone = file.createNewFile(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } return isDone; } /** * 根据路径名创建目录 * @param filePath 路径名 * @return 当创建目录成功后,返回true,否则返回false. */ public boolean createDir(String filePath) { boolean isDone = false; File file = new File(filePath); if(file.exists()) throw new RuntimeException("FileDirectory: "+filePath+" is already exist"); isDone = file.mkdirs(); return isDone; } }
删除:
package fileOperation; import java.io.File; import java.io.IOException; /** * 删除一个文件或目录 * @author wakin * */ public class Delete { /** * 删除路径名所代表的文件。 * @param filePath 路径名 * @return 当文件成功删除,返回true,否则返回false. */ public boolean deleteFile(String filePath) throws IOException{ File file = new File(filePath); if(file.exists()) { file.delete(); //System.out.println(filePath+"文件已删除."); return true; } else { //System.out.println("逻辑错误:"+filePath+"文件不存在."); return false; } } /** * 删除路径名所代表的目录 * @param filePath 路径名 * @return 当目录成功删除,返回true,否则返回false. */ public boolean deleteDir(String filePath) throws IOException{ boolean isDone = false; File file = new File(filePath); //判断是文件还是目录 if(file.exists()&&file.isDirectory()){ if(file.listFiles().length==0){ file.delete(); isDone = true; } else { File [] delFiles = file.listFiles(); for(int i=0;i<delFiles.length;i++){ if(delFiles[i].isDirectory()){ deleteDir(delFiles[i].getAbsolutePath()); //递归调用deleteDir函数 } else { delFiles[i].delete(); } } } //删除最后剩下的目录名。 deleteDir(filePath); isDone = true; } else return false; return isDone; } }
复制:
package fileOperation; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /** * 复制文件和文件夹工具类,能判断源文件不存在,源文件不可读,目标文件已经存在, * 目标路径不存在,目标路径不可写等情况 * @author wakin * */ public class Copy { /**根据源路径名和目标路径名复制文件。 * * @param source_name 源路径名 * @param dest_name 目标路径名 * @param type 值为判断如果目标路径存在是否覆盖,1为覆盖旧的文件,2为不覆盖,操作取消。 * @return 当复制成功时返回1, 当目标文件存在且type值为2时返回2,其他情况返回0 * @throws IOException 发生I/O错误 */ public int copyFile( String source_name, String dest_name, int type) throws IOException { int result = 0; int byte_read; byte [] buffer; File source_file = new File(source_name); File dest_file = new File(dest_name); FileInputStream source = null; BufferedInputStream bis = null; BufferedOutputStream bos = null; FileOutputStream dest = null; try { if(!source_file.exists() || !source_file.isFile()) //不存在 throw new RuntimeException("FileCopy: no such source file:"+source_name); if(!source_file.canRead()) //不可读 throw new RuntimeException("FileCopy: source file"+source_name +"is unreadable"); if(dest_file.exists()) { if(dest_file.isFile()) { if(type==1) { dest_file.delete(); //覆盖 result = 1 ; } else if(type==2) { result = 2; return result; //不覆盖 ,程序返回。 } } else throw new RuntimeException("FileCopy: destination"+dest_name +"is not a file."); } else { File parentDir = new File(dest_file.getParent()); //获得目录信息 if(!parentDir.exists()) { throw new RuntimeException("FileCopy: destination"+dest_name +"directory doesn't exist."); //目录不存在 } if(!parentDir.canWrite()) throw new RuntimeException("FileCopy: destination"+dest_name +"is unwriteable."); //目录不可写 } //开始复制文件 //输入流 source = new FileInputStream(source_file); bis = new BufferedInputStream(source); //输出流 dest = new FileOutputStream(dest_file); bos = new BufferedOutputStream(dest); buffer = new byte[1024*5]; while((byte_read=bis.read(buffer))!=-1) { bos.write(buffer, 0, byte_read); } result = 1; } catch (IOException e) { // TODO: handle exception e.printStackTrace(); } finally { if(source!=null){ bis.close(); source.close(); } if(dest!=null) { bos.flush(); bos.close(); dest.flush(); dest.close(); } } return result; } /**根据源路径名和目标路径名复制目录。 * 复制目录以复制文件为基础,通过递归复制子目录实现。 * @param source_name 源路径名 * @param dest_name 目标路径名 * @param type 值为判断如果目标路径存在是否覆盖,1为覆盖旧的目录,2为不覆盖,操作取消。 * @return 当复制成功时返回1, 当目标目录存在且type值为2时返回2,其他情况返回0 * @throws IOException 发生I/O错误 */ public int copyDirectory( String source_name, String dest_name, int type ) throws IOException { File source_file = new File(source_name); File dest_file = new File(dest_name); int result = 0; Delete del = new Delete(); //用于删除目录文件 if(!source_file.exists()||source_file.isFile()) //不存在 throw new RuntimeException("DirCopy: no such dir"+source_name); if(!source_file.canRead()) //不可读 throw new RuntimeException("DirCopy: source file"+source_name +"is unreadable"); if(dest_file.exists()) { if(type==1) { del.deleteDir(dest_name); //覆盖 result = 1; } if(type==2) { result = 2; //不覆盖 return result; } } if(!dest_file.exists()) { new File(dest_name).mkdirs(); //创建目标目录 File[] fileList = source_file.listFiles(); for(int i=0;i<fileList.length;i++){ System.out.println(fileList[i].getName()); if(fileList[i].isFile()){ //用copyFile函数复制文件 this.copyFile( source_name+"/"+fileList[i].getName(), dest_name+"/"+fileList[i].getName(), type); } else if(fileList[i].isDirectory()){ //递归 copyDirectory( source_name+"/"+fileList[i].getName(), dest_name+"/"+fileList[i].getName(), type); } } result = 1; } return result; } }
移动:本来想用renameTo方法来实现的,但是发现这个方法有些问题。在我的博客里写明了,希望大家能指点一下。
package fileOperation; import java.io.File; import java.io.IOException; /** * 移动文件/目录,利用Delete类和Copy类来实现。 * @author wakin * */ public class Move { /** * 利用Copy类的函数和Delete类来完成移动文件/目录的操作。 * @param source_name 源路径名 * @param dest_name 目标路径名 * @param type type 值为判断如果目标路径存在是否覆盖,1为覆盖旧的文件/目录,2为不覆盖操作取消。 * @return 当移动成功后返回1,当目标目录存在且type值为2时返回2,其他情况返回0 * @throws IOException 发生I/O错误 */ public int move(String source_name,String dest_name,int type) throws IOException{ int result = 0; Copy copy = new Copy(); Delete delete = new Delete(); File source_file = new File(source_name); //File dest_file = new File(dest_name); if(!source_file.exists()) throw new RuntimeException("FileMove: no such source file:"+source_name); if(source_file.isFile()){ result = copy.copyFile(source_name, dest_name, type); //调用Copy类的copyFile函数 if(result ==1) delete.deleteFile(source_name); //调用Delete类的deleteFile函数删除源文件 } else { result = copy.copyDirectory(source_name, dest_name, type);//调用Copy类的copyDirectory函数 if(result == 1) delete.deleteDir(source_name); //调用Delete类的deleteDir函数删除源目录 } return result; } }
查看,设置属性:
package fileOperation; import java.io.File; /** * 查看,修改文件或目录的属性 * @author wakin * */ public class Attribute { /** * 查看路径名所表示文件或目录的属性。 * @param fileName 路径名 */ public void lookAttribute(String fileName) { boolean canRead; boolean canWrite; boolean canExecute; File file = new File(fileName); if(!file.exists()) throw new RuntimeException("File:"+fileName+"is not exist"); canRead = file.canRead(); canWrite = file.canWrite(); canExecute = file.canExecute(); System.out.println("Can read:"+canRead+" Can write:"+canWrite+" Can Execute:"+canExecute); } /** * 设置路径名所表示的文件或目录的的属性。?部分功能可能在windows下无效。 * @param fileName 路径名 * @param readable 是否可读 * @param writable 是否可写 * @param executable 是否可执行 * @param ownerOnly 是否用户独享 * @return 属性设置成功,返回true,否则返回false */ public boolean setAttribute( String fileName, boolean readable, boolean writable, boolean executable, boolean ownerOnly) { boolean isDone = false; File file = new File(fileName); isDone = file.setReadable(readable, ownerOnly) && file.setWritable(writable, ownerOnly) && file.setExecutable(executable, ownerOnly); return isDone; } }
查看大小:
package fileOperation; import java.io.File; import java.io.IOException; /** * 计算文件或目录的空间大小。 * @author wakin * */ public class Size { /** * 计算路径名代表的文件或目录所占空间的大小。 * @param fileName 路径名 * @return 所占字节数 * @throws IOException 发生I/O错误 */ public static long getSize(String fileName) throws IOException { long result = 0; File file = new File(fileName); if(!file.exists()) throw new RuntimeException("No such source file:"+fileName); if(file.isFile()){ return file.length(); } else { String [] FileList = file.list(); for(int i =0;i<FileList.length;i++) { result += getSize(fileName+"/"+FileList[i]); //迭代 } } return result; } }
呵呵,第一次修改完后就是这些了,可能还有些问题考虑的不全面。希望大家能多提意见。
- fileOperation.jar (7 KB)
- 描述: jar包
- 下载次数: 50
- FileOperation.rar (65 KB)
- 描述: 工程文件包含源代码
- 下载次数: 105
评论
2 楼
zym16621
2008-09-16
创建新文件,直接用file.createNewFile()即可。不用创建FileOutputStream对象
1 楼
wh8766
2008-09-15
好久没有处理文件了 参考下 ~
博主在第一个java文件中的疑问也曾经碰到过
fos只有关闭后才会把文件正确的保存起来 好像flush()也可以
博主在第一个java文件中的疑问也曾经碰到过
fos只有关闭后才会把文件正确的保存起来 好像flush()也可以
发表评论
-
正则表达式检验url
2009-03-11 13:23 3447最近在编写一个java中间件,其间要用到协议绑定。以便得到的数 ... -
Java对象如何杀死自己?
2009-03-04 12:47 1784在java一个对象如何才能撤销自己呢?就是标注上自己可以被垃圾 ... -
复习java基础知识-java变量
2008-12-14 12:16 3015前一阵子忙于项目申请 ... -
UDP基础
2008-09-20 16:27 1835无连接的操作使用UDP协议: 一个数据报文是一个独立的单元,其 ... -
网络通讯基础
2008-09-20 15:51 1421著名的OSI(Open System Interconnect ... -
实现的一个简单的TCP连接池
2008-09-19 17:06 11036实现一个非常基础的TCP连接池,仅作参考。呵呵。 impo ... -
关于renameTo方法的疑惑
2008-09-11 16:10 4004想用java实现一个移动文 ... -
关于计算java程序运行时间
2008-09-10 15:51 29923突然想准确的测试一下Java代码的执行时间,在网上找了一会。发 ...
相关推荐
以上就是“用Java写的本地文件操作”这个项目涉及的主要技术点。通过理解并实践这些知识点,开发者可以熟练地在Java应用程序中进行文件操作,无论是简单的文本文件还是更复杂的二进制文件。在实际开发中,还需要考虑...
Java编程语言提供了丰富的API用于处理文件操作,包括创建、读取、写入和删除文件等。在Java中,写文件是通过`java.io`包中的类实现的,主要涉及File类、FileWriter类、BufferedWriter类等。下面将详细阐述Java写文件...
# java实现对文件的各种操作的工具类 ## 可以实现的操作有: 1. 删除单个文件 2. 删除文件夹及文件夹下的文件 3. 使用文件流对单个文件进行复制 4. 复制整个文件夹内容(包含子文件夹中的所有内容) 5. ...
例如,`java.util` 是一个标准库包,包含了集合框架、日期时间等实用工具类。创建新包时,通常会按照公司域名的反向顺序来命名,比如 `com.example.myapp`。 在Java中,我们使用 `package` 关键字声明包,如: ```...
根据提供的文件名,我们可以假设TIo.java是一个实现了上述功能的工具类。它可能包含如下代码片段: ```java public class TIo { public static void createFile(String filePath) throws IOException { // 实现...
1. **文件操作**:在Java中,`java.io`包提供了丰富的类来执行文件操作,如`File`类用于文件和目录的基本操作,`FileReader`和`FileWriter`用于读写文本文件,`BufferedReader`和`BufferedWriter`用于提高读写效率,...
假设我们有一个`File`对象,可以使用`GridFSBucket`类进行操作: ```java GridFSBucket gridFSBucket = GridFSBuckets.create(database); GridFSUploadSession session = gridFSBucket.openUploadSession("your_...
这里我们关注的是一个名为"TextFile"的Java类,它提供了对文本文件进行读写的功能。JavaBean是一种特殊类型的Java类,设计用于数据封装和组件重用,通常遵循特定的命名和编码规范。在这个场景下,`TextFile`可能就是...
标题中的“用java写的日历class文件和jar文件”表明这是一个使用Java语言编写的日历应用,它包含了源代码以及编译后的可执行版本。这个程序可能是一个简单的命令行工具,也可能具有图形用户界面(GUI),用于展示和...
依赖类包在我的sftp包下载下提供 版权声明:本工具类为个人兴趣基于chnSftp编写的应用,个人版权在先,后因各个办公环境无相关软件也有相关的个人使用,和办公环境内的推广使用,也欢迎互联网使用,如涉及相关环境...
首先,压缩包中包含了一个项目,这个项目包含了用于操作XML文件的Java类以及实际的XML文件。在Java中,我们通常使用DOM(Document Object Model)、SAX(Simple API for XML)或StAX(Streaming API for XML)等API...
这个标题为“一个用JAVA写的清除EXE病毒文件的代码”的项目,显然是利用Java来编写的一种防病毒解决方案,主要针对的是可执行文件(EXE)的病毒清理。 描述中提到的“清除EXE病毒文件的代码”,意味着这个Java程序...
Java的`java.nio.file`包提供了丰富的文件操作接口,如`Files.setPosixFilePermissions()`和`Files.newFileChannel()`,可以用来设置权限和创建文件通道进行锁定。 7. **文件自动加密**:文件加密通常涉及对文件...
在Java编程中,处理文件和压缩包操作是常见的任务,特别是在软件开发和数据传输中。本文将详细讲解如何使用Java实现将多目录多层级的文件打...理解并掌握这些知识,对于进行Java相关的文件操作和数据打包工作至关重要。
5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...
Apache POI是Java社区开发的一个开源项目,专门用于处理Microsoft Office格式的文件,包括Word、Excel和PowerPoint。 首先,我们需要了解xlsx文件的结构。xlsx文件实际上是基于Open XML标准的,由一系列XML文件打包...
根据给出的文件名“MyUtils”,我们可以推断这个JAR包的核心类库名为"MyUtils",它很可能是一个包含各种工具方法的Java类。在Java编程中,工具类通常以静态方法为主,不包含实例化对象,方便直接调用。MyUtils类可能...
* 减少文件数量:JAR 文件可以将多个 Java 类和资源文件压缩成一个文件,从而减少文件数量和大小。 如何将 Java 文件打成 JAR 包? 以下是在 Eclipse 中将 Java 文件打成 JAR 包的步骤: 1. 右键点击项目,然后...