关于IO流---笔记1
今日内容介绍
1、File
2、递归
=================================================================================
1 IO技术概述
  1.1: Output
	把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作
  1.2: Input
	把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作
  1.3c: IO操作
	把上面的这种输入和输出动作称为IO操作
2 File类的概念和作用
  概念:File类是文件和目录路径名的抽象表示形式
  Java中把文件或者目录(文件夹)都封装成File对象
        我们要去操作硬盘上的文件,或者文件夹只要找到File这个类即可
3 File类静态的成员变量
   3.1: pathSeparator
	与系统有关的路径分隔符,为了方便,它被表示为一个字符串
   3.2: separator
	与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串		
4 File类构造方法
  4.1 File(String pathname)
		通过将给定路径名字符串转换为一个File对象,之后可以使用File中的方法
		windows中的路径或文件名不区分大小写
  4.2 File(String parent, String child) 
		根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 对象
		 File(File parent, String child)
5 File类创建文件功能
		public boolean createNewFile()
		* 创建文件 如果存在这样的文件,就不创建了
6 File类创建目录功能
	* public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了
7 File类删除功能
	* public boolean delete():删除文件或者文件夹
			 *  删除的文件或者是文件夹,在File构造方法中给出
			 *  删除成功返回true,删除失败返回false
			 *  删除方法,不走回收站,直接从硬盘中删除
			 *  删除有风险,运行需谨慎
8 File类获取功能
			* String getName(): 返回路径中表示的文件或者文件夹名
				* 获取路径中的最后部分的名字
			* long length(): 返回路径中表示的文件的字节数
			* String getAbsolutePath(): 获取绝对路径,返回String对象
			* File   getAbsoluteFile() : 获取绝对路径,返回File对象
				* eclipse环境中,写一个相对路径,绝对位置工程根目录
			* String getParent(): 获取父路径,返回String对象
			* File getParentFile(): 获取父路径,返回File对象
9 File类判断功能
	* boolean exists(): 判断File构造方法中封装路径是否存在
		* 存在返回true,不存在返回false
	* boolean isDirectory(): 判断File构造方法中封装的路径是不是文件夹
		* 如果是文件夹,返回true,不是文件返回false
	* boolean isFile(): 判断File构造方法中封装的路径是不是文件
		* 如果是文件,返回true,不是文件返回false
10 File类list获取功能
	* String[] list():获取到File构造方法中封装的路径中的文件和文件夹名 (遍历一个目录)
		* 返回只有名字
	* File[] listFiles():获取到,File构造方法中封装的路径中的文件和文件夹名 (遍历一个目录)
		* 返回的是目录或者文件的全路径
	* static File[] listRoots(): 列出可用的文件系统根 
11 文件过滤器
    11.1: 作用
	过滤一个目录下的指定扩展名的文件,或者包含某些关键字的文件夹
    11.2 方法介绍
		* public String[] list(FilenameFilter filter)
		* public File[] listFiles(FileFilter filter)
12 文件过滤器_原理分析
	* A:文件过滤器_原理分析
		* listFiles()遍历目录的同时,获取到了文件名全路径,调用过滤器的方法accept,将获取到的路径传递给accept方法的参数pathname
		* accept方法接收了参数pathname,参数是listFiles传递来的
		* 在accept方法中,进行判断,如果这个路径是Java文件,返回true,走着返回false
		* 一旦方法返回了true
		* listFiles将路径保存到File数组中
13 递归概念和注意事项
  13.1: 递归概念
	* 递归,指在当前方法内调用自己的这种现象
	* 递归分为两种,直接递归和间接递归
	* 直接递归称为方法自身调用自己。间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法
  13.2 b: 注意事项
	* 递归一定要有出口, 必须可以让程序停下
	* 递归次数不能过多
	* 构造方法,禁止递归
14 递归的几个例子
15 输入和输出
   15.1: 参照物
	 到底是输入还是输出,都是以Java程序为参照
	 Output
	  * 把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作
	    * 程序到文件称为输出
	Input
	  * 把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作
	    * 文件到程序称为输入
	 IO操作
	把上面的这种输入和输出动作称为IO操作
16 字节输出流OutputStream
	16.1概念
	 * IO流用来处理设备之间的数据传输
	 * Java对数据的操作是通过流的方式
	 * Java用于操作流的类都在IO包中
	 * 流按流向分为两种:输入流,输出流。
	 * 流按操作类型分为两种:
	 * 字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的
	 * 字符流 : 字符流只能操作纯字符数据,比较方便。
	16.2IO流常用父类
			* 字节流的抽象父类:
				* InputStream 
				* OutputStream
			* 字符流的抽象父类:
				* Reader 
				* Writer		
	16.3 如何用IO程序书写
			* 使用前,导入IO包中的类
			* 使用时,进行IO异常处理
			* 使用后,释放资源
	16.4: 相关方法介绍
			*  void close(): 关闭此输出流并释放与此流有关的所有系统资源。
			*  void write(byte[] b): 将 b.length 个字节从指定的 byte 数组写    入此输出流
			*  void write(byte[] b, int off, int len) :将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
			* abstract  void write(int b) : 将指定的字节写入此输出流。
 17 字节输出流FileOutputStream写字节
		17.1: FileOutputStream
			* 写入数据文件,学习父类方法,使用子类对象
		17.2: FileOutputStream构造方法
			* 作用:绑定输出的输出目的
			* FileOutputStream(File file) 
				* 创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
			* FileOutputStream(File file, boolean append) 
				* 创建一个向指定 File 对象表示的文件中写入数据的文件输出流,以追加的方式写入。
			* FileOutputStream(String name) 
				* 创建一个向具有指定名称的文件中写入数据的输出文件流。
			* FileOutputStream(String name, boolean append) 
				* 创建一个向具有指定 name 的文件中写入数据的输出文件流,以追加的方式写入。
		17.3: 流对象使用步骤
			*  1. 创建流子类的对象,绑定数据目的
			*  2. 调用流对象的方法write写
			*  3. close释放资源
		17.4: 注意事项
			* 流对象的构造方法,可以创建文件,如果文件存在,直接覆盖
18字节输出流FileOutputStream写字节数组
		18.1: 方法介绍
			*  void write(byte[] b): 将 b.length 个字节从指定的 byte 数组写入此输出流
			*  void write(byte[] b, int off, int len) :将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
19 文件的续写和换行符号
		19.1: 文件的续写
			*  FileOutputStream构造方法, 的第二个参数中,加入true
		19.2: 换行符号
			* 在文件中,写入换行,符号换行  \r\n
			* \r\n 可以写在上一行的末尾, 也可以写在下一行的开头
20 IO中的异常处理
	20.1:IO流的异常处理
			* try catch finally
21 字节输入流InputStream
		20.1: 方法介绍
			* abstract  int read() :
				* 从输入流中读取数据的下一个字节。
			* int read(byte[] b)  
				* 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
			* int read(byte[] b, int off, int len) 
				* 将输入流中最多 len 个数据字节读入 byte 数组。
			* void close() 
				* 关闭此输入流并释放与该流关联的所有系统资源。
22 字节输入流FileInputStream读取字节
		22.1 方法介绍
			* abstract  int read() :
				* 从输入流中读取数据的下一个字节,返回-1表示文件结束
			* int read(byte[] b)  
				* 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
				* 读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。
			* int read(byte[] b, int off, int len) 
				* 将输入流中最多 len 个数据字节读入 byte 数组。
			* void close() 
				* 关闭此输入流并释放与该流关联的所有系统资源。
23 字节输入流FileInputStream读取字节数组
		23.1方法介绍
			* int read(byte[] b)  
				* 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
				* 读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。
			* int read(byte[] b, int off, int len)
24 字节流复制文件读取单个字节
例如: 
			/*
			 *  将数据源 d:\\lijun.txt
			 *  复制到 c:\\lijun.txt  数据目的
			 *  字节输入流,绑定数据源
			 *  字节输出流,绑定数据目的
			 *  
			 *  输入,读取1个字节
			 *  输出,写1个字节
			 */
24 字节流复制文件读取字节数组
25字符输出流写文本FileWriter类
	25.1: 方法介绍
			*  void write(int c)
				*  写入单个字符
			* void write(String str)  
				* 写入字符串
			* void write(String str, int off, int len) 
				* 写入字符串的某一部分
			* void write(char[] cbuf)  
				* 写入字符数组
			* abstract  void write(char[] cbuf, int off, int len)  
				*  写入字符数组的某一部分
26 字符输入流读取文本FileReader类
		26.1: 方法介绍
			*  int read() 
				* 读取单个字符
			* int read(char[] cbuf) 
				* 将字符读入数组
			* abstract  int read(char[] cbuf, int off, int len)  
				* 将字符读入数组的某一部分。
		26.2: 例子
			/*
			 *  字符输入流读取文本文件,所有字符输入流的超类
			 *    java.io.Reader
			 *  专门读取文本文件
			 *  
			 *  读取的方法 : read()
			 *   int read() 读取1个字符
			 *   int read(char[] c) 读取字符数组
			 *   
			 *   Reader类是抽象类,找到子类对象 FileReader
			 *   
			 *   构造方法: 绑定数据源
			 *     参数:
			 *        File  类型对象
			 *        String文件名
			 */
27flush方法和close方法区别
	* A: flush方法和close方法区别
		*a: flush()方法
			* 用来刷新缓冲区的,刷新后可以再次写出,只有字符流才需要刷新
		*b: close()方法
			* 用来关闭流释放资源的的,如果是带缓冲区的流对象的close()方法,不但会关闭流,还会再关闭流之前刷新缓冲区,关闭后不能再写出
28字符流复制文本文件
关于IO流---笔记1的更多相关文章
- Java基础知识强化之IO流笔记17:FileOutputStream构造方法使用
		1. 可以参照之前写的笔记: Android(java)学习笔记167:Java中操作文件的类介绍(File + IO流) 2. FileOutputStream(常用的)构造方法: FileOu ... 
- Java基础知识强化之IO流笔记71:NIO之 NIO的(New IO流)介绍
		1. I/O 简介 I/O ( 输入/输出 ):指的是计算机与外部世界或者一个程序与计算机的其余部分的之间的接口.它对于任何计算机系统都非常关键,因而所有 I/O 的主体实际上是内置在操作系统中的. ... 
- Java基础知识强化之IO流笔记68:Properties和IO流集合使用
		1. Properties和IO流集合使用 这里的集合必须是Properties集合: public void load(Reader reader):把文件中的数据读取到集合中 public v ... 
- Java基础知识强化之IO流笔记66:Properties的概述 和 使用(作为Map集合使用)
		1. Properties的概述 Properties:属性集合类.是一个可以和IO流相结合使用的集合类. 该类主要用于读取以项目的配置文件(以.properties结尾的文件 和 xml文件). ... 
- Java基础知识强化之IO流笔记42:IO流总结(图解)
		1. IO流总结(图解) 
- Java基础知识强化之IO流笔记22:FileInputStream / FileOutputStream 复制文本文件案例1
		1. 使用字节流FileInputStream / FileOutputStream 复制文本文件案例: 分析: (1)数据源:从哪里来 a.txt -- 读取数据 -- FileInpu ... 
- Java基础知识强化之IO流笔记16:IO流的概述和分类
		1. IO流的分类 流向: (1)输入流:读取数据到内存 (2)输出流:写入数据到硬盘(磁盘) 操作的数据类型: (1)字节流:操作的数据是字节 ... 
- Java基础知识强化之IO流笔记01:异常的概述和分类
		IO流操作的时候会出现很多问题,java中叫作异常,所以我们先介绍一下异常: 1. 程序的异常:Throwable(Throwable类是java中所有异常或错误的超类) (1)严重问题:Error ... 
- Java基础知识强化之IO流笔记83:NIO与IO
		当学习了Java NIO和IO的API后,一个问题马上涌入脑海: 我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异.它们的使用场景,以及它们如何影响您的代 ... 
随机推荐
- golang实现模拟键盘按键
			公司前段时间要我写个小项目需要可以局域网内一个ipad控制另一台pc上的键盘输入,github上找了找,居然有个robotgo库这么神级的存在,感觉go的库真是越来越多了,虽然大部分都是第三方的.ht ... 
- HDU1815 Building roads(二分+2-SAT)
			Problem Description Farmer John's farm has N barns, and there are some cows that live in each barn. ... 
- curl获取图片
			<?php set_time_limit(0); //执行30秒超时后继续执行 header("Content-type:text/html;charset=utf-8"); ... 
- DWZ富客户端HTML框架
			一.了解 概述:是中国人自己开发的基于jQuery实现的Ajax RIA开源框架. 目的:简单实用.扩展方便(在原有架构基础上扩展方便).快速开发.RIA思路.轻量级 使用:用html扩展的方式来代替 ... 
- (C#)把磁盘目录树加载在窗体菜单中
			这又是一个没有技术含量的代码.写出来只是玩玩,所以也不敢放在首页. 这里有个问题,是获取文件/文件夹的图标.使用 System.Drawing.Icon.ExtractAssociatedIcon 只 ... 
- 释放Windows C盘空间 -- 虚拟内存和休眠文件
			本文由Suzzz原创,发布于 http://www.cnblogs.com/Suzzz/p/4111718.html ,转载请保留此声明. 项目组有一Windows工作站, 由于需要使用Kinect最 ... 
- [转]angular的路由机制
			在谈路由机制前有必要先提一下现在比较流行的单页面应用,就是所谓的single page APP.为了实现无刷新的视图切换,我们通常会用ajax请求从后台取数据,然后套上HTML模板渲染在页面上,然而a ... 
- Visualforce Page CSS样式
			Salesforce Page开发者文档:https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_stylin ... 
- 感知机学习算法Java实现
			感知机学习算法Java实现. Perceptron类用于实现感知机, 其中的perceptronOriginal()方法用于实现感知机学习算法的原始形式: perceptronAnother()方法用 ... 
- linux swap交换分区说明/管理
			https://coolnull.com/3699.html 一.SWAP说明1.1 SWAP概述当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用.那些被释 ... 
