0
点赞
收藏
分享

微信扫一扫

Day_17 IO流File类

寒羽鹿 2022-02-13 阅读 85
java

Day_17随堂笔记

递归算法

递归 : 递进回归
	代码中的体现: 方法内部调用方法本身
	
生活中的案例:
	从前有座山,山里有座庙,庙里有个老和尚,老和尚给小和尚讲故事...
        从前有座山,山里有座庙,庙里有个老和尚,老和尚给小和尚讲故事...
        	从前有座山,山里有座庙,庙里有个老和尚,老和尚给小和尚讲故事...
        		从前有座山,山里有座庙,庙里有个老和尚,老和尚给小和尚讲故事...
        
    学编程 -> 赚钱 -> 娶媳妇 -> 生娃娃.. 
        学编程 -> 赚钱 -> 娶媳妇 -> 生娃娃..  
        	学编程 -> 赚钱 -> 娶媳妇 -> 生娃娃..  
        		学编程 -> 赚钱 -> 娶媳妇 -> 生娃娃..  
    俄罗斯套娃,文件的遍历    

递归算法的前提

//先找规律
1. 必须定义方法
2. 必须有出口
3. 定义的方法必须有形参
4. 在方法内部调用方法自己时,传入的参数要发生变化 --> 变化要往出口方向前进
5. 递归的次数不要太多

递归的内存图

请添加图片描述

快速排序的原理

请添加图片描述

File类

File:  计算机中所有文件和文件夹的类

结论 : 计算机中要么是文件要么是文件夹

File类的构造方法和自定义常量

*File(String pathname) : 传入一个文件/文件夹路径,File对象指向这个文件/文件夹;
    
File(String parent, String child) : 以子父路径的形式去表示File对象 (String表示)
*File(File parent, String child) : 以子父路径的形式去表示File对象 (父路径File对象的形式表示)    
    
//File对象的创建,File只指向路径结尾的文件和文件夹,不代表整个路径    
    
    File对象的创建做了哪些事情:
        1. 创建了对象
        2. 开辟了内存空间
        3. 让file对象指向了路径结尾的文件/文件夹
        //文件不存在没有创建新文件
        
File.pathSeparator = ;
File.pathSeparatorChar = ;
File.separator = \
File.separatorChar = \        

File类的创建功能

* boolean createNewFile(): 创建文件 

boolean mkDir(): 创建单级文件夹
* boolean mkDirs(): 创建单级文件夹或者多级文件夹

相对路径和绝对路径

//当你要表示的文件和文件夹在项目路径下,就可以使用相对路径去表示文件/文件夹路径 --> 简化书写

绝对路径 : 绝对能找到文件/文件夹的路径 --> 完整路径
	特点 : 以盘符开头
	
//相对路径 : 理解参照物	IDEAEclipse软件的相对路径起点: Project
相对路径 : 	以参照物为起点,向路径内寻找文件/文件夹
	特点 : 不以盘符开头

寄快递:
绝对路径 : 地球:\\亚洲\\中国\\湖北\\武汉\\江夏\\茅店山中路\\东湖网谷\\6号楼\\4楼\\尚硅谷\\402\\谈斌
相对路径 : //参照物: 东湖网谷
	6号楼\\4楼\\尚硅谷\\402\\谈斌

File类的删除功能

boolean delete(): 删除文件/文件夹, 不走回收站!!

File类的获取功能

* String getName() : 获取文件/文件夹的名称
* long length() : 获取文件的大小(所占字节数)
 
  String getAbsolutePath() : 以字符串的形式返回file对象指向的文件/文件夹的绝对路径
  File getAbsoluteFile() :File对象的形式返回file对象指向的文件/文件夹的绝对路径    
  
  String getParent()  : 以字符串的形式返回file对象指向的文件/文件夹的父路径
  File getParentFile()  :File对象的形式返回file对象指向的文件/文件夹的父路径
  
  String getPath()  : 获取创建File对象时,传入的文件/文件夹的路径(File类的toString方法内部就是在调用getPath)
     
   long lastModified() : 获取File对象指向的文件/文件夹最后一次修改的时间 -> 毫秒值  

File类的判断功能

* boolean exists() : 判断File对象指向的文件/文件夹是否存在!!
* boolean isFile() : 判断File对象指向的文件/文件夹是否是文件
* boolean isDirectory() : 判断File对象指向的文件/文件夹是否是文件夹   

boolean isAbsolute()  : 判断创建File对象时传入的是否是绝对路径
boolean isHidden() : 判断file对象指向的文件/文件夹是否是隐藏文件/文件夹

文件夹的遍历功能

* File[] listFiles() : 把一个文件夹中所有的文件/文件夹获取到,存入到File[]数组中 -> 只能获取当级文件夹

如果file对象指向的是一个文件,那么方法的返回值是null --> 发生空指针异常
如果file对象指向的是一个空文件夹,那么方法会返回一个内容为0的空数组  -> 不会出现空指针异常

* File[] listFiles(FileFilter filter)  
    FileFilter filter: 文件夹过滤器 --> 接口
    	有且仅有一个抽象方法: boolean accept(File file) -> 重写后就是对file对象进行某种判断
    		如果返回值是true,通过 / 如果返回值是false,不通过

I/O概述

I/O流 技术 : 实现了Java代码和硬盘上文件的数据交互 --> 数据的永久存储
I : input -> 输入
O : output -> 输出
流 : 水流

搞清楚什么时候用输入流/什么时候用输出流 ?  参照物: 当前Java文件
    代码数据 ---> 文件内 : 输出流
    文件内容 ---> 代码中 : 输入流
    
I / O 流的分类 :     
	流向分类 : 输入流和输出流  Input/ReaderOutput/Writer
	操作的文件类型分类: 
		字节文件(计算机中所有的文件都是字节文件) :Stream结尾 -> 字节流;
		字符文件(字节文件中有一类文件,文件中都是字符 -> txt,java,xml,html,js,md....) :Reader/Writer结尾的流 --> 字符流
			//如何分辨字符文件 : 用windows自带的记事本工具打开且不"乱码"的文件就是字符文件
			
InputStream : 字节输入流
BufferedWriter : 高效字符输出流
OutputStreamWriter : 字符输出流 -> 转换流: 把字节流转换成字符流的流
	// 字符流的本质就是 : 字节流 + 编码格式

字节流体系结构

字节流的根节点: InputStream/OutputStream -> 抽象类

子类 :
文件字节流(普通字节流) : FileInputStream/FileOutputStream
高效字节流: BufferedInputStream/BufferedOutputStream

FileOutputStream

FileOutputStream : 文件字节输出流

构造方法:
	FileOutputStream(String name) : 传入文件的字符串类型路径,让字节输出流对象指向这个文件;
    FileOutputStream(File file) : 传入文件的File类型路径,让字节输出流对象指向这个文件; 
    
    字节输出流对象的创建做了哪些事情:
        1. 创建了对象
        2. 开辟了内存空间
        3. 文件不存在会帮你创建文件,文件存在会创建新文件覆盖原文件
        4. 让输出流对象指向路径结尾的文件 (这里只能是文件)

FileOutputStream写数据的方法

写数据的方法 : void write -> 写的是字节

	 * void write(int b) : 一次写一个字节
 	 void write(byte[] b)  : 一次写一整个字节数组
     * void write(byte[] b, int off, int len)  : 一次写一个字节数组的一部分
     	int off -> int startIndex : 起始索引
     	int length -> 写几个
     	
    如何写字符串 ? String -> 字节数组
        byte[] getBytes()
    如何写换行符 ?  "\r\n".getBytes()
    如何追加写 ? boolean append 追加写开关
        FileOutputStream(String name, boolean append)
        FileOutputStream(File file, boolean append)     	

FileInputStream

FileInputStream : 普通字节输入流

构造方法:     //输入流指向的文件必须存在!!
	FileInputStream(String name) 
    FileInputStream(File file)   
        //输入流没有追加读

FileInputStream读数据的方法

读数据的方法 : int read -> 读的是字节
	* int read() : 一次读一个字节 -> 返回值是读到的字节
    * int read(byte[] b) : 一次读一个字节数组
    	//byte[] b : 用来存储每次读到的数据
    int read(byte[] b, int off, int len)  : 一次读一个字节数组的一部分
    
//只要文件内有换行符,那么read方法就可以读到换行符    
举报

相关推荐

Day15——File类与IO流

IO流:File类

FILE类与IO流

File类、IO流(部分)

File类和IO流

Java IO流 01 File 类

0 条评论