IO内容
Throwable类
Error:错误
Exception:异常
RuntimeException:运行期异常
虚拟机处理异常的方式:将异常信息打印出来 然后终止当前线程 后面的代码不执行
如果想让后面的代码执行我们需要
try catch
注意:如果一个try后面有多个catch的话 大的放后面 小的放前面
一般的时候就别跟多个catch了 跟 Exception就够了
JDK1.7的新特性 catch后面可以跟多个异常 用| 隔开
e.printStackTrance()
finally 和final 和finalize()的区别
如果catch里面有return finally还会执行吗?
非RuntimeException:编译期异常
处理方法:throws
try catch
如果你不知道如何处理异常的时候 用throws
自定义异常:
throw
File类
三个构造方法:
File(String path);
File(String parent ,String child);
File(File parent , String child);
创键功能
createNewFile()
mkdir()
mkdirs()
重命名
renameTo(File file);
删除
delete()
走回收站吗? 不走
能删除带有子目录的文件夹吗? 不能
判断功能:
isFile()
isDirectory()
exist();
canRead()
canWrite()
isHidden()
获取功能:
getAbsolutePath()
getPath()
getName()
length()
String[] list()
File[] listFiles()
文件名称过滤器
字节流
字节输入流
read() 一次读一个字节 返回成int 光标就往后走一下 当读不到的时候 返回 -1
为什么返回值是int的呢?
字节输出流
write() 问下 字节输出流 有 一次直接写一个字符串的方法吗? 没有!!!!!
字节流拷贝文件一次一个字节
字节流拷贝文件一次性直接考呗成功的
获取文件的大小:
FileInputStream类的available()方法 可以获取要读的文件的大小
File的length方法
字节流拷贝文件一次一个字节数组的
read(byte[] arr); 返回实际读到的长度
write(byte[] arr, 0, len);
缓冲流拷贝文件
字节流只从文件中读取中文打印到控制台: 乱码
flush 和 close的区别
flush:刷新缓冲区 但是不关闭流 流还可以继续使用
close:关闭流 但是关闭之前会刷新一次缓冲区 流不能继续使用了
字节流复制文件加入标准异常处理代码 jdk1.6
字节流复制文件加入标准异常处理代码 jdk1.7
字符流:
字符输入流
read():一次读一个字符 返回成int
GBK编码特点:中文是由两个字节组成的 第一个字节是负数 第二个不确定
字符输出流:
字符输出流 有 直接能写一个字符串的方法 write(String line);
字符流拷贝文本文件 一次一个字符
字符流拷贝文件 一次一个字符数组
read(char[] chs);
write(char[] chs, 0 , len);
缓冲流一次一次一行的拷贝
readLine() :BufferedReader类的 能读到换行符吗? 不能
newLine():BufferedWriter类的 跨平台
什么时候用字符流呢: 只把文件读入到程序中
或者 只把程序中的文字 写入到文件中的时候用字符流
字符流不能拷贝 非纯文本文件(能用txt打开并且能看懂的就是纯文本文件)
转换流:
InputStreamReader:字节流通向字符流的桥梁
OutputStreamWriter:字符流通向字节流的桥梁
保证不乱码:用什么样的编码存取的文件 就用什么样的编码读取文件
递归:
递归次数不能太多
构造方法不可以用递归
递归要有出口if else
递归的好处:不用知道循环次数
各种其他的流:
序列流:
序列流可以把多个 字节输入流 整合成一个,从序列流中读取数据时,将从被整合的第一个流开始读
,读完一个读第二个,以此类推,
内存输出流: 该输出流可以向内存中写数据, 把内存当作一个缓冲区, 写出之后可以一次性获取出所有数据
案例:定义一个文件输入流,调用read(byte[] b)方法,将a.txt文件中的内容打印出来(byte数组大小限制为5)
随机访问流:
可以指定位置读取文件和写入文件
序列化流-对象操作流:
如果说想把对象写入到文件中,必须让对象所属的类实现serializable标记接口
ID号可加可不加
数据输入输出流:
DataInputStream, DataOutputStream可以按照基本数据类型大小读写数据,在把基本类型数据写出时可以保留着
在java中的这种基本类型格式
打印流:
只有数据目的 没有数据源
有自动刷新的功能:具备两个条件才能自动刷新:开启自动刷新功能(构造方法里面传true),另外调用println()的时候才能自动刷新
标准输入输出流
System.in :InputStream的一个对象,标准的输入流,只有通过这个流才可以从键盘录入数据
System.out: PrintStream的一个对象,标准的输出流,只有通过这个流才可以把数据输出到控制台
Properties
store()
load() |
|