`
剑&箫
  • 浏览: 54585 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Java中文件的操作

    博客分类:
  • Java
 
阅读更多
文件可分为目录文件、标准文件、缓存文件三种,在Java中文件的表示有两种,一种是用的文件的路径字符串表示,另外一种是在Java的io包中用File对象表示文件。第一种表示很简单,但是对文件的各种操作不容易,用第二种表示可以运用File对象的各种方法对文件的各种操作。在此总结用File对象对指定文件路径中的标准文件的统计、对指定文件路径中目录文件的统计和对计算指定文件的大小以及对含有关键字的标准文件的查找。
首先要先定义一个FileTest类,然后再定义一个统计标准文件的方法countFile,给这个方法传入指定文件的路径,即String的形参,此方法还要返回标准文件的个数,即一个整型的返回值。方法的框架如下代码所示:
public class FileCount {
/**
* 统计指定路径下的标准文件个数
* @param path:指定的路径
* @return:返回标准文件个数
*/
public int countFile(String path){


}

}
在方法中首先要定义一个计数器来统计标准文件的个数,即int  count=0;现在要实例化一个File类的对象:java.io.File file = new java.io.File(path);创建一个File类的对象之后,首先要判断给定的路径文件是否存在,查阅API文档可知道用exists()可判断给定的文件路径是否存在,该方法返回的是一个boolean值,如果存在就返回一个true,否则返回false。如果给定的文件路径存在,则把该文件中的文件装入到一个文件对象数组中,在Java中可以用public  File[] listFiles()这个方法返回指定文件中的文件对象,所以首先要创建一个File数组:java.io.File[] array = file.listFiles();将文件中的文件对象装入数组之后,要判断数组是否为空,如果为空则说明给定的文件不是目录文件。如果数组不为空,则说明给定的文件是文件目录。给定的如果是文件目录,这时就要遍历File对象数组,判断给定文件目录中的文件对象是否是标准文件,如果是标准文件,则计数器加1。如果数组元素是目录文件,则又要重复上面的循环,这样循环下去,很麻烦!!如果用递归算法就很简单。递归算法就是方法调用方法本身。到此,对给定文件的标准文件的统计就完成了。具体代码如下:
/**
* 统计指定路径下的标准文件个数
* @param path:指定的路径
* @return:返回标准文件个数
*/
public int countFile(String path){
int count=0;//计数器

//创建文件对象
java.io.File file = new java.io.File(path);

//判断路径是否存在
if (!file.exists()){
System.out.println("给定的文件不存在!");
return 0;
}

//如果存在就将文件夹中的文件存到数组中
java.io.File[] array = file.listFiles();
//判断给定的是否是一个文件目录
if (array==null){
System.out.println("给定的文件不是文件目录!");
return 0;
}

//如果不执行上面两个判断则说明给定的是文件目录
//遍历文件对象数组
for (int i=0;i<array.length;i++){

//得到文件对象
java.io.File fl = array[i];
//得到文件对象的绝对路径
String str = fl.getAbsolutePath();

//判断是否是一个标准文件
if (fl.isFile()){
count++;
System.out.println("找到一个文件:"+str);
}else if (fl.isDirectory()){
count+=countFile(str);

}


}


return count;
}
比如对本人电脑上D:\xuexiruanjian文件进行统计,该文件在windows下得属性显示如下所示





运行结果:3550
运行结果与windows上统计的一样。

统计指定文件的目录文件的方法以及计算指定文件的大小和统计标准文件数的思路是一样的,只是在是否是目录文件时使用方法isDirectory()判断的。具体代码如下:
/**
* 统计指定路径下的文件夹个数
* @param path
* @return
*/
public int countDirectory(String path){
int count = 0;

//创建文件对象
java.io.File file = new java.io.File(path);

//判断给定的路径是否存在
if (!file.exists()){
System.out.println("给定的路径不存在!");
return 0;
}

//如果存在就将文件中的文件存到数组中
java.io.File[] arr = file.listFiles();
//判断给定的是否是一个文件目录
if (arr==null){
System.out.println("给定的不是一个文件目录");
return 0;
}
//遍历数组
for (int i=0;i<arr.length;i++){
java.io.File fl = arr[i];
String str = fl.getAbsolutePath();
if (fl.isDirectory()){
count++;
count+= countDirectory(str);
System.out.println("找到一个文件目录:"+str);
}
}

return count;
}
运行结果:735
结果与上面的给出的结果一样。

/**
* 统计指定路径下的文件总大小的方法
* @param path:指定的路径
* @return:返回总大小
*/
public long fileSize(String path){
long count = 0;

//创建文件对象
java.io.File file = new java.io.File(path);

//判断此路径是否存在
if (!file.exists()){
System.out.println("指定的路径不存在");
return 0;
}

//如果存在,则把该路径下的文件大小装入数组中
java.io.File[] arr = file.listFiles();
//判断文件是否是文件目录
if (arr==null){
System.out.println("给定的不是一个文件目录");
return 0;
}

//遍历文件数组
for (int i=0;i<arr.length;i++){
//得到文件对象
java.io.File fl = arr[i];
//得到文件绝对路径
String str = fl.getAbsolutePath();
//判断是否是标准文件
if (fl.isFile()){
count += fl.length();
}else if (fl.isDirectory()){
count+=fileSize(str);
}
}

return count;
}
运行结果:595782020
结果和上面给出的是一样的。

对指定含有关键字的文件进行查找的思路与上面对文件的操作差不多,先定义一个search 方法,再给该方法传入要在某个文件中查找文件的路径和关键字两个字符串类型参数。查找的方法是先判断给定的文件是否存在,如果存在再判断是否是目录文件,如果是目录文件,再对目录文件中的标准文件文件的路径是否含有给定的关键字的判断,这个判断要用到String类中的indexOf(String str)方法,该方法返回指定子字符串在此字符串中第一次出现处的索引,如果字符串参数作为一个子字符串在此对象中出现,则返回第一个这种子字符串的第一个字符的索引;如果它不作为一个子字符串出现,则返回 -1。
如果目录文件中有目录文件则像上面一样运用递归算法,具体代码如下:
/**
* 查找指定文件下的文件名中包含指定字符串的文件
* @param path:给定的路径
* @param str:包含的字符串
*/
public void search(String path,String str){

//创建文件对象
java.io.File file = new java.io.File(path);

//判断此路径是否存在
if (!file.exists()){
System.out.println("指定的路径不存在");
return;
}

//如果存在,则把该路径下的文件大小装入数组中
java.io.File[] arr = file.listFiles();
//判断文件是否是文件目录
if (arr==null){
System.out.println("给定的不是一个文件目录");
return;
}

//遍历文件数组
for (int i=0;i<arr.length;i++){
//得到文件对象
java.io.File fl = arr[i];
//得到文件绝对路径
String st = fl.getAbsolutePath();
//判断是否是标准文件
if (fl.isFile()){
if (st.indexOf(str)!=-1){
System.out.println("文件:"+st);
}
}else if (fl.isDirectory()){
search(st,str);
}

}

}
比如对上面的文件夹查找含有java关键字的标准文件的查找,查找结果如下:


文件:D:\xuexiruanjian\Eclipse\eclipse\configuration\org.eclipse.osgi\bundles\320\1\.cp\icons\full\etool16\java_app.gif
文件:D:\xuexiruanjian\Eclipse\eclipse\configuration\org.eclipse.osgi\bundles\327\1\.cp\icons\full\etool16\javadoc.gif
文件:D:\xuexiruanjian\Eclipse\eclipse\features\org.eclipse.mylyn.java_feature_3.4.0.v20100608-0100-e3x\about.html
文件:D:\xuexiruanjian\Eclipse\eclipse\features\org.eclipse.mylyn.java_feature_3.4.0.v20100608-0100-e3x\epl-v10.html
文件:D:\xuexiruanjian\Eclipse\eclipse\features\org.eclipse.mylyn.java_feature_3.4.0.v20100608-0100-e3x\feature.properties
文件:D:\xuexiruanjian\Eclipse\eclipse\features\org.eclipse.mylyn.java_feature_3.4.0.v20100608-0100-e3x\feature.xml
文件:D:\xuexiruanjian\Eclipse\eclipse\features\org.eclipse.mylyn.java_feature_3.4.0.v20100608-0100-e3x\license.html
文件:D:\xuexiruanjian\Eclipse\eclipse\features\org.eclipse.mylyn.java_feature_3.4.0.v20100608-0100-e3x\META-INF\eclipse.inf
文件:D:\xuexiruanjian\Eclipse\eclipse\features\org.eclipse.mylyn.java_feature_3.4.0.v20100608-0100-e3x\META-INF\ECLIPSEF.RSA
文件:D:\xuexiruanjian\Eclipse\eclipse\features\org.eclipse.mylyn.java_feature_3.4.0.v20100608-0100-e3x\META-INF\ECLIPSEF.SF
文件:D:\xuexiruanjian\Eclipse\eclipse\features\org.eclipse.mylyn.java_feature_3.4.0.v20100608-0100-e3x\META-INF\MANIFEST.MF
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.activation_1.1.0.v201005080500.jar
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.jws_2.0.0.v201005080400.jar
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.mail_1.4.0.v201005080615.jar
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.servlet.jsp_2.0.0.v200806031607.jar
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.servlet_2.5.0.v200910301333.jar
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.wsdl_1.5.1.v201005080630.jar
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.wsdl_1.6.2.v201005080631.jar
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml.bind_2.0.0.v20080604-1500.jar
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml.bind_2.1.9.v201005080401.jar
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml.rpc_1.1.0.v201005080400\about.html
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml.rpc_1.1.0.v201005080400\about_files\LICENSE
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml.rpc_1.1.0.v201005080400\about_files\NOTICE
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml.rpc_1.1.0.v201005080400\lib\jaxrpc.jar
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml.rpc_1.1.0.v201005080400\META-INF\eclipse.inf
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml.rpc_1.1.0.v201005080400\META-INF\ECLIPSEF.RSA
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml.rpc_1.1.0.v201005080400\META-INF\ECLIPSEF.SF
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml.rpc_1.1.0.v201005080400\META-INF\MANIFEST.MF
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml.rpc_1.1.0.v201005080400\plugin.properties
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml.soap_1.2.0.v201005080501\about.html
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml.soap_1.2.0.v201005080501\about_files\LICENSE
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml.soap_1.2.0.v201005080501\about_files\NOTICE
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml.soap_1.2.0.v201005080501\lib\saaj.jar
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml.soap_1.2.0.v201005080501\META-INF\eclipse.inf
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml.soap_1.2.0.v201005080501\META-INF\ECLIPSEF.RSA
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml.soap_1.2.0.v201005080501\META-INF\ECLIPSEF.SF
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml.soap_1.2.0.v201005080501\META-INF\MANIFEST.MF
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml.soap_1.2.0.v201005080501\plugin.properties
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml.stream_1.0.1.v201004272200.jar
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml.ws_2.1.0.v200902101523.jar
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\javax.xml_1.3.4.v201005080400.jar
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\java_cup.runtime_0.10.0.v201005080400.jar
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\net.sourceforge.lpg.lpgjavaruntime_1.1.0.v201004271650.jar
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\org.apache.ant_1.7.1.v20100518-1145\lib\ant-javamail.jar
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\org.eclipse.emf.importer.java_2.6.0.v20100521-1846.jar
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\org.eclipse.epp.package.jee_1.3.0.20100617-0521\javaee-ide_x16.png
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\org.eclipse.epp.package.jee_1.3.0.20100617-0521\javaee-ide_x32.png
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\org.eclipse.epp.package.jee_1.3.0.20100617-0521\javaee-ide_x48.png
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\org.eclipse.mylyn.java.tasks_3.4.0.v20100608-0100-e3x.jar
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\org.eclipse.mylyn.java.ui_3.4.0.v20100608-0100-e3x.jar
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\org.eclipse.wtp.javascript.capabilities_1.0.100.v201005102000.jar
文件:D:\xuexiruanjian\Eclipse\eclipse\plugins\org.mozilla.javascript_1.7.2.v201005080400.jar
文件:D:\xuexiruanjian\Java\jre6\bin\java-rmi.exe
文件:D:\xuexiruanjian\Java\jre6\bin\java.dll
文件:D:\xuexiruanjian\Java\jre6\bin\java.exe
文件:D:\xuexiruanjian\Java\jre6\bin\javacpl.exe
文件:D:\xuexiruanjian\Java\jre6\bin\javaw.exe
文件:D:\xuexiruanjian\Java\jre6\bin\javaws.exe
文件:D:\xuexiruanjian\Java\jre6\bin\java_crw_demo.dll
文件:D:\xuexiruanjian\Java\jre6\lib\javaws.jar
文件:D:\xuexiruanjian\Java\jre6\lib\security\java.policy
文件:D:\xuexiruanjian\Java\jre6\lib\security\java.security
文件:D:\xuexiruanjian\Java\jre6\lib\security\javaws.policy



  • 大小: 2.1 KB
0
14
分享到:
评论

相关推荐

    Java软件开发中文件操作的研究与探析.pdf

    在文件操作中,顺序读写和随机读写是两种常见的读写方式。顺序读写是指从文件的开始位置逐步读取或写入数据,直到达到文件的结束位置。随机读写是指读写完上一个字节后,不仅能读写其后继的字节,还可以读写文件中的...

    java 操作文件工具类 java 操作文件工具类

    java 操作文件工具类java 操作文件工具类 java 操作文件工具类java 操作文件工具类java 操作文件工具类 java 操作文件工具类java 操作文件工具类java 操作文件工具类 java 操作文件工具类java 操作文件工具类java ...

    java文件操作类

    java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java文件操作类java...

    java操作CSV文件

    在Java中,处理CSV文件有多种方式,本篇文章将详细介绍如何利用`opencsv-2.3.jar`库来进行高效的数据读写操作。 #### 二、所需库与环境准备 - **opencsv**: 一个用于读写CSV文件的Java库,版本为2.3。 - **开发环境...

    java实现对文件的各种操作的工具类.md

    # java实现对文件的各种操作的工具类 ## 可以实现的操作有: 1. 删除单个文件 2. 删除文件夹及文件夹下的文件 3. 使用文件流对单个文件进行复制 4. 复制整个文件夹内容(包含子文件夹中的所有内容) 5. ...

    java properties文件操作工具类,可追加修改

    此工具类只用于Java后端在操作Properties文件的时候写的工具类,方便properties文件的存取操作

    java视频教程—Java文件操作

    java视频教程 Java文件操作 JavaFile

    JAVA代码实现远程操作服务器文件

    Session是一个远程服务器文件操作的会话,可以实现文件的移动、复制、删除等操作。通过使用Session,可以实现远程服务器文件的操作。 6. 使用InputStream和BufferedReader实现命令执行结果的获取 InputStream和...

    java实现windows文件系统操作监控

    Java的`java.nio.file`包提供了丰富的文件操作接口,如`Files.setPosixFilePermissions()`和`Files.newFileChannel()`,可以用来设置权限和创建文件通道进行锁定。 7. **文件自动加密**:文件加密通常涉及对文件...

    Java 上传文件到 SharePoint

    首先,我们需要了解Java中用于文件操作的基本类,如`java.io.File`,它提供了创建、读取、写入和删除文件的方法。此外,为了与SharePoint交互,我们需要使用Microsoft提供的客户端对象模型(Client Object Model,...

    java 移动文件.

    Java 文件操作是 Java 编程语言中的一种基本操作,包括文件的移动、复制、删除、剪切等。下面是关于 Java 文件操作的知识点总结: 一、文件移动 文件移动是指将文件从一个目录下移到另一个目录下。在 Java 中,...

    java文件操作工具类

    java文件操作工具类是java中针对文件操作的一个工具类,可以方便的读取,下载,上传文件等操作,希望可以帮到大家。

    java实现文件加密解密

    在 Java 中,文件操作的流程一般为:打开--&gt;读取--&gt;对内容进行变换--&gt;写入--&gt;关闭。常规性文件操作会用到的类有五个:File、InputStream、OutputStream、FileInputStream、FileOutputStream,均包含在 java.io 下面...

    java通过文件头内容判断文件类型

    在Java编程中,判断文件类型通常不是通过文件扩展名,而是通过读取文件的头部字节来识别。这是因为有些文件可能...理解并掌握这个方法,能够帮助我们在实际开发中更好地处理各种文件操作,提高程序的健壮性和安全性。

    Java中文件IO流.pdf

    Java 中文件 IO 流是指 Java 语言中对文件的输入输出操作,通过定义文件流来实现文件的读写操作。文件流是指在程序中用于文件输入输出的对象, Java 中提供了多种文件流类型,包括 InputStream 和 OutputStream 两大...

    Java文件操作封装类

    Java文件操作封装类

    java文件读写操作

    这个文件里面包含了java的IO流对文件的操作和java通道加内存映射对文件操作的源码

    Java写入大数据文件

    在写入和切分文件操作完成后,程序使用singleFileDataSort方法将每个小文件的数据进行排序,以便后续的数据处理操作。最后,程序使用deathDataFile方法对十个小文件的数据进行比较和整合,以提高数据的精度和可靠性...

    java操作mongodb存储文件实例

    将一系列图片文件存储到MongoDB中 java操作mongodb存储文件

    java文件操作大全

    如何在Java中操作文件呢?转载供大家欣赏

Global site tag (gtag.js) - Google Analytics