JAVASE23天从入门到精通_Day17

File的概述
File : 代表的是计算机中所有的文件和文件夹! -> 计算机中除了文件就是文件夹! -> true
File的构造方法
File(String pathname) : 传入文件/文件夹的路径封装一个file对象
    
File(String parent, String child) : 传入字符串类型的子父路径封装一个file对象
File(File parent, String child) : 传入File类型的父路径和String类型的子路径封装一个file对象
    
//file对象指向路径结尾的文件/文件夹  不代表整个路径    

 创建File对象干了啥:
        1. 创建了File对象
        2. 在堆内存中开辟了空间
        3. 让file对象指向路径结尾的文件/文件夹
相对路径和绝对路径*
绝对路径 : 完整的文件/文件夹路径 就是绝对路径
	C:\Users\Administrator\Desktop\aaa.txt -> 绝对路径
	绝对路径 : 一定以盘符开头!
    绝对路径 : 任何路径都可以表示
        
相对路径 : 以一个参照物作为起点,往内找的路径叫相对路径   
	相对路径: 只能找到参照物内的路径
	IDEA / Eclipse : project的路径 (IO流体系中的相对路径起点)
    相对路径 : 一定不是以盘符开头!


举例 :
	绝对路径 : 地球:\\亚洲\\中国\\湖北省\\武汉市\\东湖高新区\\茅店山中路\\东湖网谷\\6号楼\\4楼\\尚硅谷\\404教室\\谈斌;
	相对路径 : 起点->东湖网谷  注意 : 一定是往相对路径的内部去找
		6号楼\\4楼\\尚硅谷\\404教室\\谈斌;
File类中的自定义常量
    // ;
    static String pathSeparator
    static char pathSeparatorChar

    //\
    static String separator
    static char separatorChar
File的创建功能
*boolean createNewFile()  :  根据file对象指向的文件,创建一个文件,返回创建是否成功 //定义创建文件!!
    //如果文件存在,不会覆盖源文件,返回false
    //如果前置路径写错就直接报错!!
    
boolean mkdir() : 根据file对象指向的文件夹,创建一个文件夹,返回创建是否成功 //一定创建的是文件夹,单级文件夹!!  
*boolean mkdirs() : 可以创建多级文件夹也可以创建单级文件夹 //一定创建的是文件夹
File的删除功能(了解)
boolean delete()  :删除此抽象路径名表示的文件或目录。 // 不走回收站的
File的获取功能
 //获取File对象指向的文件/文件夹的绝对路径
 File getAbsoluteFile()  :File对象类型返回
 String getAbsolutePath()  :String对象类型返回
 
* String getName()  : 获取文件/文件夹的名称

 //获取File对象指向的文件/文件夹的父路径
 String getParent()  :String对象类型返回
 File getParentFile()  :File对象类型返回  
 
 String getPath() : 你如何创建File对象传入的路径,就如何获取getPath方法的结果
 	//此方法就是toString方法的源码
 	
 long lastModified()  : 返回file对象指向的文件/文件夹最后一次修改的时间毫秒值
 
 long length()  : 返回file对象指向的文件的大小(所占字节数) //文件夹本身无大小
File的判断功能
* boolean exists()  : 判断file对象指向的文件/文件夹是否存在
* boolean isDirectory()  : 判断file对象指向的是否是一个文件夹
* boolean isFile() : 判断file对象指向的是否是一个文件 

 boolean isAbsolute() : 判断创建File对象时编写路径是否是绝对路径
 boolean isHidden() : 判断file对象指向的文件/文件夹是否为隐藏
File的遍历
String[] list()  : 获取File对象指向的文件夹根目录下的文件/文件夹,以字符串数组的方式存储获取到的内容
	//不推荐
	
	
File[] listFiles() : 获取File对象指向的文件夹根目录下的文件/文件夹,File数组的方式存储获取到的内容
	//强烈推荐     
	
//如果file对象指向的是一个空文件夹 : 返回的是一个内容为空的数组
//如果file对象指向的是一个文件 : 返回的是null -> 出现空指针异常
带过滤条件的遍历方法
File[] listFiles(FileFilter filter)  :带过滤条件的遍历方法

FileFilter -> 接口 -> 文件过滤器接口
	有且仅有一个抽象方法: boolean accept(File file) //形参接收的就是文件夹下的文件/文件夹
        重写accept方法在方法内编写过滤条件 -> truefalse 不要
多级文件夹遍历
IO概述
IO技术: 实现了Java代码和硬盘数据进行交互!
    IO是通往现实世界的桥梁,集合桥上的小汽车;

IO : Input/Output -> 输入/输出
	什么时候用输入,什么时候用输出 ---> 参照物: 当前的Java代码
	
IO流 :-> 水流
	通过IO流技术实现代码和文件的联通
	
IO流的分类: 
	1. 按流向分 : 
		输入: Input / Reader
		输出: Output /Writer
	2. 按操作的文件类型分 :
		字节流: 可以操作计算机中所有类型的文件
			XxxxxStream : 流的类名以Stream结尾的流 一定是字节流
		字符流: 只能操作计算机中所有的字符文件
			XxxxReader/XxxxxWriter : 流的类名以Reader/Writer结尾的流 一定是字符流

		计算机中一切皆字节 --> 计算机中的文件都是字节文件
		但是这一些字节文件中有一类文件占比非常大 : 字符文件(字符文件其实本质也是字节文件)
            字符文件 : 如果能用windows记事本能打开不乱码的文件叫字符文件
				.txt/.java/.html/.css/.js/.xml/.md ....
                
       InputStream :  字节输入流
       BufferedWriter : 高效字符输出流
       PrintStream : 打印字节输出流
       OutputStreamWriter : 字符输出流 -> 转换流: 把字节流转换成字符流的流
       		//字符流的本质 = 字节流 + 编码格式;
       		
       		
          所有的流使用完毕都需要关闭流 : void close();		
InputStream/OutputStream
InputStream/OutputStream : 是字节流的根节点
	InputStream/OutputStream是抽象类  --> 不能创建对象
FileInputStream/FileOutputStream
FileInputStream/FileOutputStream : 普通字节输入/输出流

FileOutputStream: 文件字节输出流
	构造方法:
		* FileOutputStream(String name) : 传入一个字符串形式的文件路径; 此文件: 目标文件;
        FileOutputStream(File file) : 传入一个File形式的文件路径; 此文件: 目标文件;   
		//输出流才有追加写

	创建一个输出流对象做了什么:
        1. 创建输出流对象
        2. 开辟堆内存空间
        3. 创建fos对象指向路径结尾的文件 //保证前置路径存在
        4. 如果文件不存在,创建文件
        5. 如果文件存在,创建新文件去覆盖老文件
        
        
FileInputStream: 文件字节输入流
	构造方法:
		FileInputStream(String name) 
		FileInputStream(File file) 
            
    输出流指向的目标文件,文件不存在会自动创建;
    目标文件存在,会默认覆盖,除非打开追加写开关;

    输入流指向的源文件,文件不存在会报错,源文件必须存在!

    字节输入流对象创建发生了哪些事情:
        1. 创建了对象
        2. 开辟了空间
        3. 让字节输入流对象指向路径结尾的文件
        4. 如果源文件不存在则报错!        
FileOutputStream的输出方法-> 写的方法
FileOutputStream写数据的方法: write

三种写法:
   *void write(int b) : 一次写一个字节
   void write(byte[] bys) : 一次写一个字节数组  
   **void write(byte[] b, int offset, int length): 一次一个字节数组的一部分  
   		int offset: 从数组的哪个索引开始写
   		int length : 写多少个字节
   		
   		
   	如何换行?? -> 往外写换行符 "\r\n"
   	如何写字符串?? String类中 : byte[] getBytes() -> 把字符串转换成字节数组

   	如何追加写?? boolean append : 追加写开关 //只有基本输出流有追加写开关
   	    FileOutputStream(String name, boolean append)
   	    FileOutputStream(File file, boolean append)
FileInputStream的输入方法-> 读的方法
FileInputStream的输入方法 : read

三种读法: 都可以读到文件中的换行符
	*int read() : 一次读一个字节
	**int read(byte[] bys): 一次读一个字节数组
	int read(byte[],int offset, int length): 一次读一个字节数组的一部分
BufferedInputStream/BufferedOutputStream
BufferedInputStream/BufferedOutputStream : 高效字节输入流/高效字节输出流

Buffered: 缓冲区 -> 小推车
	//当缓冲区装满了,自动刷新缓冲区,把缓冲区中的字节刷新到目标文件中
	
构造方法:
	BufferedInputStream的构造:
		BufferedInputStream(InputStream in) 
            //new BufferedInputStream(new FileInputStream("源文件"));
    BufferedOutputStream的构造:
		BufferedOutputStream(OutputStream out)
            //new BufferedOutputStream(new FileOutputStream("目标文件"));
            new BufferedOutputStream(new FileOutputStream("目标文件",true)); 追加写
            
//通过构造方法发现:  BufferedInputStream/BufferedOutputStream也可以叫做包装流
         包装流: 本身不具备读写能力,具备读写能力的还是传入的普通流对象
         
BufferedInputStream/BufferedOutputStream 的读写方式:
	BufferedInputStream读的方式:
		*int read() : 一次读一个字节
		**int read(byte[] bys): 一次读一个字节数组
		int read(byte[],int offset, int length): 一次读一个字节数组的一部分
	BufferedOutputStream写的方式:
		*void write(int b) : 一次写一个字节
   		void write(byte[] bys) : 一次写一个字节数组  
   		**void write(byte[] b, int offset, int length): 一次一个字节数组的一部分  
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值