Java IO流笔记3

File

用来将文件或者文件夹封装成对象

方便对文件与文件夹的属性信息进行操作

File对象可以作为参数传递给流的构造函数

static String separator 跨平台的分隔符

 

String filePath = ‘a.txt’;

System.out.println(new File(filePath));   //结果为filePath,无论文件是否存在

 

File类的常见方法

1.创建

在指定位置创建文件,如果该文件已经存在,则不创建,返回false

和输出流不一样,输出流对象一建立则马上创建文件,而且文件存在时会覆盖

boolean createNewFile();   抛出IOException


创建文件夹

boolean mkdir();创建文件夹

boolean mkdirs();创建多级文件夹


2.删除

boolean delete();  删除失败返回false

void deleteOnExit();  在程序退出时删除指定文件


3.判断

boolean exists(); 文件是否存在

对一个文件对象判断是否为文件或者是目录时,必须先判断该文件对象封装的内容是否存在,可通过exsists()判断

boolean isDirectory();  判断是否是一个目录

boolean isFile();  判断是否为一个文件

boolean isHidden();判断是否是隐藏文件

boolean isAbsolute();判断是否为绝对路径


4.获取信息

1)String getName();获得文件名

2)String getParent();  //该方法返回的是绝对路径中父目录,如果封装的是相对路径则返回空

3)String getPath();  和封装的路径有关

4)String getAbsolutePath(); 返回绝对路径

5)long length();获得文件长度

6)long lastModified();获得文件最后一次修改的时间

7)boolean renameTo(File file); 类似于文件移动

8)static File[] listRoots();列出有效盘符

9)String[] list(); 列出指定目录下的所以文件和目录,注意调用list方法的file必须封装了一个目录,且目录必须存在,以字符串数组的形式返回

10)File[] listFiles();列出指定目录下的所以文件和目录,注意调用list方法的file必须封装了一个目录,且目录必须存在,以文件数组的形式返回


练习1:列出目录下所有内容

代码:

	public static void main(String[] args) throws IOException {
		File file = new File("e:/media");
		if(file.isDirectory()){
			listFiles(file);
		}else{
			System.out.println("该文件不是一个目录");
		}
 	}
	static void listFiles(File dir){
		System.out.println(dir);
		File[] files = dir.listFiles();
		for(int i=0; i<files.length; i++){
			if(files[i].isDirectory()){
				listFiles(files[i]);
			}else{
				System.out.println(files[i]);
			}
		}
	}

运行截图:


如果你希望输出的文件之间带有缩进,可以这样做:

	static String getLevel(int level){
		StringBuilder sb = new StringBuilder();
		for(int i=0; i<level; i++){
			sb.append("  ");
		}
		sb.append("|--");
		return sb.toString();
	}
	static void listFiles(File dir, int level){
		System.out.println(getLevel(level)+dir.getName());
		level++;
		File[] files = dir.listFiles();
		for(int i=0; i<files.length; i++){
			if(files[i].isDirectory()){
				listFiles(files[i], level);
			}else{
				System.out.println(getLevel(level)+files[i].getName());
			}
		}

运行截图:


练习2:删除带内容的目录

	static void delDir(File dir){
		File[] files = dir.listFiles();
		for(int i=0; i<files.length; i++){
			if(files[i].isDirectory()){
				delDir(files[i]);
			}else{
				files[i].delete();
			}
		}
		dir.delete();
	}


练习3:创建Java文件列表

	public static void main(String[] args) throws IOException {
		File file = new File("D:\\Program Files\\Eclipse\\demo");
		if(file.isDirectory()){
			List<File> fileList = new ArrayList<File>();
			getJavaFiles(file, fileList);
			PrintWriter pw = new PrintWriter(new FileWriter("f:/javaFileList.txt"));
			Iterator<File> iter = fileList.iterator();
			while(iter.hasNext()){
				pw.println(iter.next().getPath());
			}
			pw.close();
		}else{
			System.out.println("该文件不是一个目录");
		}
 	}
	static void getJavaFiles(File dir, List<File> fileList){
		File[] files = dir.listFiles();
		for(File file: files){
			if(file.isDirectory()){
				getJavaFiles(file, fileList);
			}else{
				if(file.getName().endsWith(".java")){
					fileList.add(file);
				}
			}
		}
	}
运行截图:



Properties

是HashTable的子类

具备map集合的特点,而且它里面存储的键值对都是字符串

是集合和IO技术相结合的集合容器

该对象的特点:可以用于键值对形式的配置文件


常用方法:

1)String getProperty(String key);  得到属性名对应的值

2)Object setProperty(String key, String value);   调用HashTable的put方法,添加元素

3)Set<String> stringPropertyNames();   获得属性名的Set集合

4)void load(InputStream in);  从输入流中加载属性列表

5)void load(Reader r);

6)void store(Writer w, String comments);  将属性列表写入到输出流中

7) void store(OutputStream out, String comments);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值