IO流的概念及使用方法三

package javaStudy;

/**
 * 
 * @author zhaocx1
 * 
 */
import java.io.File;//导入IO流包中的类包
/*
 * File类用来将文件或者文件夹封装成对象,方便对文件于文件夹的属性信息进行操作,File对象可以作为参数传递给流的构造函数。
 * 流也可以操作文件,只是操作文件中的数据,不能操作文件的增删,也不能操作文件夹。
 */

public class FileDemo1 {
	public static void main(String[] args) {
		consMethod();// 调用静态方法
	}

	public static void consMethod() {// 定义静态方法
		// 将a.txt封装成file对象。可以将已有的和为出现的文件或者文件夹封装成对象。
		// 创建File对象
		File f = new File("a.txt");
       //创建文件夹并创建文件夹的子目录
		File f2 = new File("d:\\abc", "b.txt");
        
		File d = new File("d:\\abc");
		File f3 = new File(d, "c.txt");

		sop("f==" + f);//打印文件文件夹目录
		sop("f2==" + f2);
		sop("f3==" + f3);
		File f4 = new File("d:" + File.separator + "abc" + File.separator
				+ "zzz" + File.separator + "a.txt");
	} // 跨平台的分割符。

	public static void sop(Object obj) {// 将一个静态的打印方法封装到sop中,其它对象可以调用该方法
		System.out.println(obj);
	}

}
package javaStudy;

/**
 * 
 * @author zhaocx1
 * 
 */
/*
 * File类常见方法:
 * 1.创建。
 *     boolean createNewFile(); 在指定位置创建文件,如果该文件已经存在,则不创建,返回false.
 *                              和输出流不一样,输出流对象一建立创建对象,而且文件已经存在,会覆盖。
 *
 *     boolean mkdir(); 创建文件夹,只能创建到二级目录。
 *     boolean mkdirs(); 创件多级文件夹。
 * 
 * 2.删除。 
 *     boolean delete();删除失败,返回false。
 *     void deleteOnExit(); 在程序退出时删除指定文件。
 * 
 * 3.判断。
 *     boolean exists():文件是否存在。
 *     isFile(); 
 *     isDirectory();
 *     isHidden();
 *     isAbsolute();是否是绝对路径
 * 4.获取信息。
 *     getName();
 *     getPath();
 *     getParent();
 *     
 *     getAbsolutePath();  
 *     lastModified();
 *     long length();
 */
import java.io.*;

public class FileDemo2 {
	public static void main(String[] args) throws IOException {// 函数上抛出异常
		method_3();// 调用静态方法
	}

	public static void method_5()// 定义静态方法
	{
		//创建File对象
		File f1 = new File("e:\\File类.java");
		File f2 = new File("e:\\File概念.java");
		sop("rename==" + f1.renameTo(f2));//把
	}

	public static void method_4() {
		File f = new File("abc\\file.txt");
		sop("path==" + f.getPath());// 路径
		sop("path==" + f.getAbsolutePath());// 绝对路径
		sop("parent==" + f.getParent());// 该方法返回的是绝对路径中的父目录。如果获取的是相对路径,返回是null
										// 如果相对路径中有上一层目录那么该目录就是返回结果。
	}

	public static void method_3() throws IOException {
		File f = new File("file.txt");
		f.createNewFile();

		// f.mkdir();

		// 在判断文件对象是否是文件或者目录时,必须要先判断文件对象封装内容是否存在。
		// 通过exists判断。
		sop("dir==" + f.isDirectory());// 表示的是一个目录
		sop("file==" + f.isFile());// 是否是文件夹
		sop(f.isAbsolute());// 是否是绝对路径
	}

	public static void method_2() {
		File f = new File("file.txt");

		// sop("exists=="+f.exists());
		// sop("execute==" + f.canExecute());是否能执行。

		// 创建文件夹
		File dir = new File("abc\\kkk\\a\\ss\\ddd\\qq");
		sop("mkdir==" + dir.mkdirs());
	}

	public static void method_1() throws IOException {
		File f = new File("file.txt");
		// sop("create=="+f.createNewFile());

		sop("delete:" + f.delete());

		// .deleteOnExit(); 虚拟机退出时删除文件。
	}

	public static void sop(Object obj) {
		System.out.println(obj);
	}

}
package javaStudy;

/**
 * 
 * @author zhaocx1
 * 
 */
import java.io.File;//导入IO流包中的类包
import java.io.FilenameFilter;

public class FL {
	public static void main(String[] args) {
		File dir = new File("d:\\");// 指定到C盘目录下
		String[] arr = dir.list(new FilenameFilter() {// 列出C盘目录先得所有文件的名称
					public boolean accept(File dir, String name) {
						// return true;}
						return name.endsWith(".JPG");// 返回所有的图片
					}
				});
		System.out.println("len=" + arr.length);// 列出查找指定文件的数量
		for (String name : arr) {// 增强for循环,对指定目下的所有文件进行遍历,列出指定文件的名字
			System.out.println(name);
		}
		// listDemo();
		listRootsDemo();
	}

	public static void listDemo() {
		File f = new File("e:\\");// list用于打印指定目录下文件的名称。
		String[] names = f.list();// 调用list方法的file对象必须是封装了一个目录。该目录还必须存在。
		for (String name : names) {// 增强for循环,对指定目下的所有文件进行遍历,列出指定文件的名字
			System.out.println(name);
		}
	}

	public static void listRootsDemo() {
		File[] files = File.listRoots();// listRoots是列出指定目录下的根目录
		for (File f : files) {// 增强for循环,对指定目下的所有文件进行遍历,列出指定文件的名字
			System.out.println(f.length());// 输出打印所有根目录的数量
		}
	}
}
package javaStudy;

/**
 * 
 * @author zhaocx1
 * 
 */
/*
 * 列出指定目录下文件或者文件夹,包含子目录中的内容。
 * 也就是列出指定目录下所有内容。
 *
 * 因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可。
 * 也就是函数自身调用自身,这种表现形式,或者变编程手法,成为递归。
 * 
 * 递归注意事项:
 * 1.限定条件。
 * 2.注意递归的次数,尽量避免内存溢出。
 */
import java.io.File;//导入IO流包中的类包

public class ListFileDiGui {
	public static void main(String[] args) {
		File dir = new File("d:\\game");
		showDir(dir, 0);
		
		toBin(6);

		int n = getSum(3);
		System.out.println("n==" + n);
	}

	public static int getSum(int n) {
		if (n == 1)
			return 1;
		return n + getSum(n - 1);
	}

	public static void toBin(int num) {
		while (num > 0) {
			System.out.println(num % 2);
			num = num / 2;
		}
	}

	public static String getLevel(int level) {
		StringBuilder sb = new StringBuilder();
		for (int x = 0; x < level; x++) {
			sb.append("  ");
		}
		return sb.toString();
	}

	public static void showDir(File dir, int level) {
		File[] files = dir.listFiles();//列出指定目录下的所有文件名称
		level++;
		for (int x = 0; x < files.length; x++) {
			if (files[x].isDirectory())
				showDir(files[x], level);
			else
				System.out.println(getLevel(level) + files[x]);
		}
	}
}
</pre><pre name="code" class="java">package javaStudy;
/**
 * 
 * @author zhaocx1
 * 
 */
/*
 * 删除一个带内容的目录。
 * 删除原理:
 * 在Window中,删除目录从里面往外删除的。
 * 既然是从里往外删除,就需要用到递归。
 */
import java.io.File;//导入IO流包中的类包

public class DeleteFileDemo {
	public static void main(String[] args) {
		File dir = new File("e:\\abc");
		removeDir(dir);
	}

	public static void removeDir(File dir) {//定义静态方法
		File[] files = dir.listFiles();//列出指定目录下的所有文件名称
		for (int x = 0; x < files.length; x++) {
			if (files[x].isDirectory())//判断是否是目录
				removeDir(files[x]);//调用所在函数中的函数
			else
				System.out.println(files[x].toString() + "="
						+ files[x].delete());
		}
		System.out.println(dir + "=" + dir.delete());
	}
}
package javaStudy;
/**
 * 
 * @author zhaocx1
 * 
 */
/*
 * 将一个指定目录下的java文件的绝对路径,存储到一个文本文件中。
 * 建立一个java文件列表文件。
 * 
 * 思路:
 * 1.对指定的目录进行递归。
 * 2.获取递归过程所有的java文件的路径。
 * 3.将这些路径存储到集合中。
 * 4.将集合中的数据写入到一个文件中。
 */
import java.io.File;//导入IO流包中的类包
import java.util.ArrayList;//导入集合包中的类包
import java.util.List;
public class NewFileDemo {
	public static void main(String[] args)
	{
		File dir=new File("d:\\java");//指定一个目录,对该指定的目录进行递归
		List<File> list=new ArrayList<File>();//定义一个集合容易用于存储数据
		
		fileToList(dir,list);//调用静态函数
		System.out.println(list.size());//输出打印目录的个数
	}
	public static void fileToList(File dir,List<File> list)
	{
		File[] files=dir.listFiles();//获取指定目录下所有绝对路径文件的名称
		for(File file:files)//利用增强for循环对所有文件进行递归
		{
			if(file.isDirectory())//判断递归的文件是否是目录
				fileToList(file,list);//调用所在函数中的函数进行递归
			else
			{
				if(file.getName().endsWith(".java"))//判断是否以指定的扩展名命名
					list.add(file);//符合条件添加到集合中
			}
			System.out.println("file="+file);//输出打印文件名称
		}
	}
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值