文件小总结

1.文件是用来保存数据,我们写的java程序都是通过文件来保存的。文件通常保存在计算机磁盘中,所以文件是永久的,不是暂时的。当你要把数据保存在文件中时,要给文件起个名字,文件的全名字包含文件的路径名和扩展名,但我们单独讲一个文件名字时,是不带文件路径的。文件的扩展名不是文件的格式,它只是文件的后缀名,有时候只是为了我们方便查询而已。

2.有时候我们希望把同一类型的文件封装到一起,我们就引入了目录,也称文件夹,当然目录中不只是能够存真实文件,它也可有子目录,但是同一目录下不可能存在名字相同的目录或真实文件。系统中主要有3类文件,一种是目录类型的文件,第二种是真实文件,还有一种是虚拟内存文件,但我们通常只讲前面两种。

3.文件的路径:

文件的路径有两种,一种是相对路径,一种是绝对路径。相对路径是指这个文件路径引起的跟其他文件路径的关系。我举个例子:假设图片存入的位置为:D:\0903\学习\images\0.1gif中,你写的某个程序的存入位置为:D:\0903\学习\a.java中,那么,图片相对于某程序的相对路径为:images/0.1gif,那如果我把程序的存入位置改为:D:\0903\学习\java\a.java中,此时,图片相对于程序的相对路径是:/images/0.1gif.

绝对路径是指以根目录开头的路径。绝对路径很好理解,也就是文件存在哪个盘的哪个目录中,就不举例子了。

4.文件类的几种常用方法:

boolean isFile(),是用来判断File对象指向的文件是否是真实文件,如果是,就返回true,否则,返回false,

boolean createNewFile(),是用来创建一个新的真实文件的。

booLean isDirectory(),是用来判断File对象指向的文件是否是目录,如果是,返回true,否则,返回true

Boolean mkdir(),根据File对象的名字来创建一个目录。

boolean mkdirs(),如果File对象名字有多级目录,可以一次性创建。

5.当谈到文件时,我们应该要对文件进行一些操作,比如读写操作,文件的复制,判断盘中文件的个数等等。

判断盘中文件的个数:

public class FileDisplay {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String path="D:\\10";
		FileDisplay fi=new FileDisplay();
		int cou=fi.Count(path);
		System.out.println("在该目录下找到文件的个数是:"+cou);

	}
	
	
	
	/**
	 * 统计文件的个数方法
	 * @param path
	 * @return
	 */
	public int Count(String path){
		int count=0;//文件个数计数器
		File file=new File(path);//创建一个file对象
		File [] shuZu=file.listFiles();//将file对象里的文件或文件夹放到数组中
		for(int i=0;i<shuZu.length;i++){//遍历数组
			if(shuZu[i].isDirectory()){//如果是文件夹
				String str=shuZu[i].getAbsolutePath();//得到该文件夹得绝对路径
				count+=Count(str);
				}
			if(shuZu[i].isFile()){//如果是文件
				count++;//使计数器加1
				String str=shuZu[i].getAbsolutePath();//得到文件的绝对路径
				System.out.println("文件:"+str);
			}
		}
		return count;
	}

测试结果:

文件:D:\10\test1.java
文件:D:\10\Win$1.class
文件:D:\10\Win.class
文件:D:\10\test1.class
文件:D:\10\re.java
文件:D:\10\WindowFrame.class
文件:D:\10\re.class
文件:D:\10\test.java
文件:D:\10\complex.class
文件:D:\10\test.class
文件:D:\10\Wo.java
文件:D:\10\GreedSnake.java
文件:D:\10\JFrameTest.java
文件:D:\10\jsq.java
文件:D:\10\ji.class
文件:D:\10\qqw.java
文件:D:\10\qq2.jpg
文件:D:\10\JFrameTest.class
文件:D:\10\qqw.class
文件:D:\10\Action.java
文件:D:\10\JFrame.java
文件:D:\10\qq.jpg
文件:D:\10\aQ.jpg.png
文件:D:\10\Actio.java
文件:D:\10\Actio.class
文件:D:\10\XDHO{~}Y~X5KF9WHFB)GBYL.jpg
文件:D:\10\list.cpp
文件:D:\10\b.c
文件:D:\10\b.dsp
文件:D:\10\Debug\vc60.idb
文件:D:\10\Debug\vc60.pdb
文件:D:\10\Debug\b.pch
文件:D:\10\b.ncb
文件:D:\10\b.plg
文件:D:\10\b.opt
文件:D:\10\b.dsw
文件:D:\10\hello\wo.java
文件:D:\10\Wo复制.java
在该目录下找到文件的个数是:38
如果要如果要进行文件的读写操作以及文件的复制,就必须引用输入流和输出流。输入流是指将磁盘中文件的数据读到内存中,而输出流是将内存中的数据写到磁盘中去,

文件的复制操作:

public class RWTest {
	public static void main(String [] args){
		String path="D:\\资料\\hello.doc";
		String path1="D:\\资料\\hello复制.doc";
		RWTest.WriteTest(path, path1);//调用该方法
	}
	public static void WriteTest(String path,String path1){
		try{
		java.io.FileInputStream input=new java.io.FileInputStream(path);//根据指定的路径读写文件
		java.io.FileOutputStream output=new java.io.FileOutputStream(path1);//根据指定的路径写出文件
		int t=input.read();//将读入的字符放到变量中去
		while(t!=-1){
			output.write(t);//把读入的字符写入
			t=input.read();//然后再读入下个字符
		}
		output.flush();
		output.close();//关闭流
		input.close();//关闭流
		}catch(Exception e){
			e.getStackTrace();
		}
		
	}

}

 文件的读写操作跟文件的复制操作差不多,我就不一一列举:

 6.在判断文件的个数时,用到递归算法:就是当文件对象是目录时,得到该目录的路径,然后在递归,直到文件对象指的是真实文件时,才退出递归。

 递归算法常用于处理一些无法穷举得计算,这些计算有一个共同点就是计算数据或对象的变化都是有规律的。递归必须给出退出递归条件,否则则是死循环,像判断文件个数操作时,退出递归的条件是,当File对象所指的文件是真实文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值