当前位置:首页 > 开发 > 移动开发 > 正文

简单的文件查找和复制操作小结

发表于: 2012-08-14   作者:御天田   来源:转载   浏览:
摘要: 输入输出流 在java中如果我们想要实现文件的查找,需要用到File类,实现文件的复制操作就需要用到输入输出流了,其中:所有的输入流类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类,而所有的输出流都是抽象类OutputStream(字节输出流)或抽象类Writer(字符输出流)的子类,下面我们先来认识一下File类。 File类: File类的对象
输入输出流

在java中如果我们想要实现文件的查找,需要用到File类,实现文件的复制操作就需要用到输入输出流了,其中:所有的输入流类都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类,而所有的输出流都是抽象类OutputStream(字节输出流)或抽象类Writer(字符输出流)的子类,下面我们先来认识一下File类。
File类:
File类的对象通常用来获取文件本身的一些信息,例如文件所在的目录、文件的长度、文件的读写权限等,但是,不涉及文件的读写操作。
首先,file的构造方法有4个
File(File parent, String child)          根据 parent 抽象路径名和child 路径名字符串创建一个新 File 实例。
File(String pathname)          通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(String parent, String child)          根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File(URI uri)          通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。

我们可以根据不同的需求来用它的构造方法。下面是一个小小的文件搜索器的根据路径和关键字查找文件夹和文件的方法实现:

//按路径搜索文件的方法
	public int printDir(String name){
		//int count1=0;
		//将文件名封装成文件对象
		File dir=new File(name);
		//列表目录
		File[] files=dir.listFiles();
		if(files!=null&&files.length!=0){//当不是空目录或文件
			for(int i=0;i<files.length;i++){
				if(files[i].isDirectory()){//如果是目录
					//得到绝对路径
					String path=files[i].getAbsolutePath();
					printDir(path);
				}
				else if(files[i].isFile()){
					String path1=files[i].getAbsolutePath();
					area.append(path1+"\n");
					count1++;
				}
			}
		}
		return count1;
	}
	//按路径搜索文件夹的方法
	public int printDirs(String name){
//		/int count2=0;
		//将文件名封装成一个文件对象
		File dirs=new File(name);
		//列表目录
		File[] files=dirs.listFiles();
		if(files.length!=0&&files!=null){
			for(int i=0;i<files.length;i++){
				if(files[i].isDirectory()){
					count2++;
					//得到目录的绝对路径
					String path=files[i].getAbsolutePath();
					area.append(path+"\n");
				}
			}
			
		}
		return count2;
	}
	//按关键字搜文件的方法
	public int key(String name,String keys){
		//此处的name会默认设为E盘
		
		String knum=keys;
		//将文件名封装成一个文件对象
		File dir=new File(name);
		File[] files=dir.listFiles();
		if(files!=null&&files.length!=0){
			for(int i=0;i<files.length;i++){
				if(files[i].isDirectory()){
					//得到文件夹的绝对路径
					String path=files[i].getAbsolutePath();
					//递归调用文件的方法
					key(path,knum);
				}
				else if(files[i].isFile()){//如果是文件,则判断文件名中是否包含关键字
					//得到文件的名字
					String names=files[i].getName();
					if(names.contains(keys)){//如果文件名中包含关键字
						//得到文件的绝对路径
						String paths=files[i].getAbsolutePath();
						area.append(paths+"\n");
						count3++;
					}
				}
			}
		}
		return count3;
	}

FileInputStream类和FileOutputStream类:
如果我们对文件的读取要求很简单的话,可以用 FileInputStream类,该类的实例方法是从inputstream类中继承来的。我们就从复制一个小文件来分析这两个类。
要复制一个文件,我们要做的就是获得文件路径----->将文件内容取出------->将取出的文件写入指定的路径中
这里有两个动作:读出文件和写入文件
读文件我们可以用到FileInputStream类中的read方法,它又分几种读入形式,例如read();是不带参数的,read(byte[]);是带有一个字节数组参数的方法,另外的我们可以在jdk中找到.
写文件就可以用到FileOutputStream类中的write(byte[]);方法,和read一样,它也有几种带参数的形式。
write(byte[] b)          将 b.length 个字节从指定 byte 数组写入此文件输出流中。
write(byte[] b, int off, int len)          将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。
write(int b)          将指定字节写入此文件输出流

下面是一个复制文件的例子:
package fileCopy;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * 复制文件的类
 * @author xiu
 *
 */
public class CopyFile {
	/**
	 * 程序入口
	 * @param args
	 */
	public static void main(String[] args){
		CopyFile copyf=new CopyFile();
		//文件开始复制时记下当前的时间
		long time=System.currentTimeMillis();
		//给定一个要复制的文件路径
		String path="C:\\Users\\xiu\\Desktop\\aa.txt";
	//	String path="E:\\workspace\\java\\PlantsFight\\showRole.class";
		//给定一个复制目的地的文件路径
		String path1="C:\\Users\\xiu\\Desktop\\bb.txt";
		//调用复制文件的方法
		copyf.copyFile(path,path1);
		//记下当前时间
		long time1=System.currentTimeMillis();
		//输出文件复制所花的总时间
		System.out.println("复制一共耗时"+(time1-time)+"毫秒");
	}
/**
 * 写一个复制文件的方法
 */
	public void copyFile(String path,String path1){
		try {
			//System.out.println(path);
			InputStream file=new FileInputStream(path);
			OutputStream file1=new FileOutputStream(path1);
			//定义一个数组,用来存放读出的数据
				byte arr[]=new byte[file.available()];
				//读出arr数组中的数据
				while(file.read(arr)!=-1){
					//将读出的数据写入到文件中
					file1.write(arr);
				}
	
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

简单的文件查找和复制操作小结

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
系统中的文件可分为三种:目录文件、真实文件、缓存文件。java抽象类File提供了一些方法用来操纵文
用文件操作实现文件的复制是一个对文件操作的综合运用 它的实现过程: 打开两个文件(以读取的形式打
我们知道在计算机中,最常见的就是“文件”,有些文件里面还包含着文件,有些文件则是可以执行的文
简单的文件操作 如今很多程序不仅仅涉及到控制台的运行,更是涉及到文件这方面的操作。 对文件的简
运行效果: 代码: package com.io; import java.io.BufferedReader; import java.io.File; import
主要使用fseek函数和fread函数 fseek函数可以使文件指针遍历学生信息,当遍历到指定的学生信息后使
一.目录与路径 1.相对路径与绝对路径 绝对路径:/开头, cd /usr 相对路径:cd ../.. 2.目录操作(cd
要求:新建一个数据库文件(微软的access),里面包括学生的信息学号(ID),姓名(Name),英语成绩
简单的Android对文件进行读写操作   环境:1.系统:window7       2.Android版本:2.2   
当然,在另外很多的时候,病毒对于文件的操作,除了复制之外,还有许多。最基本而且最常用的莫过于
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号