JAVA学习日记:I/O流(1)

本节课我学习的主要内容有:

1.I/O
2.File类
3.FileFilter接口

I/O:

		I:Input
  		O:Output
  
 		从一个数据源头读取数据并将数据写入目标地点。
  		数据源和目的地可以是文件、内存、网络等。

File类:

		属于java.io包。
  		它可以封装计算机中存在的或者不存在的文件。
 		
  		构造方法:
  			File(String pathname)//传入路径字符串
  			File(File parent, String child)//父文件、父文件下的子目录。
  			File(String parent,String child)//父抽象路径、父目录抽象路径下的子抽象路径的目录。
 			File(URI, uri)
  
  		常用方法:
  			exits()判断File的对象是否存在。
  
  			creatNewFile()新建一个文件。
  			creatTempFile()新建一个临时文件。
  			
 			mkdir()新建一个目录。
 			mkdirs()新建一个目录(包括目录中的子目录)。
 			
 			delete()删除一个文件或目录。
 			deleteOnExit()虚拟机退出时删除。
 			
 			renameTo()重命名当前目录或文件。
 			Length()返回文件大小。
 			
 			list()返回指定抽象路径下的所有直接子目录或者子文件到String[]中去。
 			listRoots()返回所有根目录。
 			listFiles()返回指定抽象路径下的所有直接子目录或者子文件到File[]中去。
 
 			isFile()判断当前对象是否是文件。
 			isDirectory()判断当前对象是否是目录。
 
 			setReadOnly()设置属性为只读。
 			setReadable()设置属性为可读。
 			setWritable()设置属性为可写。
 			setExecutable()设置属性为可执行。
 
  			lastModified()返回当前对象最后修改时间。
  			setLastModified()设置最后修改时间。
  			
  			isHidden()判断文件是否隐藏。

FileFilter接口:

		属于java.io包,中的一个函数式接口
  		它能根据给定条件来过滤File

FileTest01类(测试今日所学所有内容):

package LessonForIO01;

import java.io.*;

public class FileTest01 
{
	public static void main(String[] args) 
	{
		System.out.println(System.getProperty("user.dir"));//获得当前项目在磁盘中的位置。
		
		//创建文件
		File f1 = new File("Test02.txt");
		System.out.println("f1这个对象是否存在:"+f1.exists());
		if (f1.exists() != true)
		{
			try 
			{
				System.out.println("在默认目录下创建Test02是否成功:"+f1.createNewFile());
				
			} catch (IOException e) 
				{
					e.printStackTrace();
				}
		}
		
		//创建目录
		File f2 = new File("D://Test03//");
		System.out.println("f2这个对象是否存在:"+f2.exists());
		if (f2.exists() != true)
		{
			System.out.println("在默认目录下创建Test03文件夹是否成功:"+f2.mkdir());
		}
		
		//在已有目录下创建不存在的文件
		File f3 = new File(f2,"zlm.txt");
		System.out.println("f3这个对象是否存在:"+f3.exists());
		if (f3.exists() != true)
		{
			try 
			{
				System.out.println("在f2目录下创建zlm.txt是否成功:"+f3.createNewFile());
			} catch (IOException e) 
				{
					e.printStackTrace();
				}
		}
		
		//创建父目录到子目录的所有目录
		File f4 = new File("D://f4//f4_1");
		System.out.println("f4这个对象是否存在"+f4.exists());
		if (f4.exists() != true)
		{
			System.out.println("创建f4的所有目录是否成功:"+f4.mkdirs());

		}
		
		//创建f4最里层目录中的txt文件
		File f5 = new File(f4,"f4_1_1.txt");
		System.out.println("f5这个对象是否存在:"+f5.exists());
		if (f5.exists() != true)
		{
			try 
			{
				System.out.println("创建f4的最后路径下的文件是否成功:"+f5.createNewFile());
			} catch (IOException e) 
				{
					e.printStackTrace();
				}
		}
		
		//尝试删除f5
		if (f5.exists() == true)
		{
			System.out.println("f5是否删除成功:"+f5.delete());//要先删除文件,才能继续删除目录。
		}
		
		//尝试删除f4
		if (f4.exists() == true)
		{
			System.out.println("f4是否删除成功:"+f4.delete());//删除除了最外层文件夹中的所有文件目录。
		}
		
		//更改f1的名称
		System.out.println("f1更改名称成功了吗:"+f1.renameTo(new File("Testrename.txt")));
		
		//获取f1文件长度
		System.out.println("f1的文件长度为:"+f1.length());//这样的话长度不管你有没有东西他都是零,因为你改过名了,可f1一直都是Test02。
			//所以我们这样解决
		System.out.println("f1改名过后的文件长度为:"+(new File("Testrename.txt").length()));//获取的是子接不是文字个数。
		
		//获取所有的根目录
		File[] roots = File.listRoots();
		for (File f:roots)
		{
			System.out.println("获取到的根目录有:"+f);
		}
		
		//获得某个抽象路径下直接子目录或子文件
		//只会列到该抽象路径的最后一个位置的最上层
		//假如此时最后一个位置是目录A那么只列出A中的子目录或子文件,A中子目录或子文件的子目录或子文件就不会列出了。
		File this_file = new File("D:\\workspace\\JDK8API");
		String[] str_file = this_file.list();
		for (String s:str_file)
		{
			System.out.println("获取到的子目录有:"+s);//D:\\workspace\\JDK8API的直接子目录。
		}
		
		//判断是否是路径
		System.out.println("this_file是路径吗:"+this_file.isDirectory());
		System.out.println("this_file是文件吗:"+this_file.isFile());
		
		//过滤
		File f6 = new File("D:\\workspace\\JDK8API");
		File[] file_list_f6 = f6.listFiles((f)->f.getName().endsWith("txt"));
		for (File f:file_list_f6)
		{
			System.out.println("获取到的子目录有:"+f.getName());//D:\\workspace\\JDK8API的txt结尾的。
		}
	}
}

本篇部分文字来源于:
咕嘟咖啡杨海滨老师 — 《java编程语言高级特性》
在这里十分感谢老师能够给我带来学习的激情。

2020.11.7
本文章是本人学习笔记,不进行任何商用所以不支持转载请理解!也请别拿去商用!
如果觉得对你有帮助那么欢迎你随时来回顾!
只为记录本人学习历程。
毕
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值