黑马程序员_JavaSE的File和IO流

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
1:异常
(1)程序出现的不正常的情况。
(2)异常的体系
Throwable a. Error 严重问题
b.Exception RuntimeException 运行期异常,需要修正代码
非RuntimeException 编译期异常,必须处理的,否则程序编译不通过

(3)异常的处理: A:JVM的默认处理 把异常的名称,原因,位置等信息输出在控制台,但是呢程序不能继续执行了。

B:自己处理 a:try...catch...finally 自己编写处理代码,后面的程序可以继续执行

b:throws 把自己处理不了的,在方法上声明,告诉调用者,这里有问题

(4):throw和throws是的区别
throw:
在方法体中,后面跟的是异常对象名,并且只能是一个
throw抛出的是一个异常对象,说明这里肯定有一个异常产生了
throws:
在方法声明上,后面跟的是异常的类名,可以是多个
throws是声明方法有异常,是一种可能性,这个异常并不一定会产生
(5)finally关键字 用于释放资源,它的代码永远会执行。特殊情况:在执行到finally之前jvm退出了
(6)自定义异常 继承自Exception或者RuntimeException,只需要提供无参构造和一个带参构造即可
(7)异常的注意实现
A:父的方法有异常抛出,子的重写方法在抛出异常的时候必须要小于等于父的异常 
B:父的方法没有异常抛出,子的重写方法不能有异常抛出
C:父的方法抛出多个异常,子的重写方法必须比父少或者小
2:File
(1)IO流操作中大部分都是对文件的操作
(2)构造方法 A:File file = new File("e:\\demo\\a.txt"); B:File file = new File("e:\\demo","a.txt"); C:File file = new File("e:\\demo");
(3)File类的功能
A:创建功能
public boolean createNewFile()   创建文件,如果存在了就不创建了
public boolean mkdir() 创建文件夹,如果存在了就不创建了
public boolean mkdirs() 创建父子类型的文件夹,如果父文件夹不存在会自动创建,如果存在就不创建了
B:删除功能 public boolean delete()     删除(要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹)
C:重命名功能 public boolean renameTo(File dest)    注意:如果路径名相同,就是改名。 如果路径名不同,就是改名并剪切。
D:判断功能
public boolean isDirectory() 判断是否是文件夹
public boolean isFile() 是否是文件
public boolean exists() 判断是否存在
public boolean canRead() 能否读取
public boolean canWrite() 能否改写
public boolean isHidden() 是否隐藏
E:获取功能
基本获取功能
public String getAbsolutePath() 获取绝对路径
public String getPath() 获取相对路径
public String getName() 获取名字
public long length() 获取长度   (字节长度)
public long lastModified() 获取最后的修改日期(毫秒值)
高级获取功能
public String[] list() 获取指定目录下的所有文件或者文件夹的 名称 数组
public File[] listFiles() 获取指定目录下的所有文件或者文件夹的 File 数组
F:过滤器功能
public String[] list(FilenameFilter filter)     获取的是字符串类型的文件名

public File[] listFiles(FilenameFilter filter) 获取的是对象类型的文件名

3:IO流

(1)IO用于在设备间进行数据传输的操作
(2)分类:A:流向 输入流 读取数据 输出流 写出数据
B:数据类型 字节流 字节输入流 字节输出流
字符流 字符输入流 字符输出流
(3)FileOutputStream写出数据
A:操作步骤 a:创建字节输出流对象 b:调用write()方法 c:释放资源
B:代码体现:
FileOutputStream fos = new FileOutputStream("love.txt");
fos.write("hello".getBytes());
fos.close();
(4)FileInputStream读取数据
A:操作步骤 a:创建字节输入流对象 b:调用read()方法 c:释放资源
B:代码体现:
FileInputStream fis = new FileInputStream("love.txt");
//方式1
int by = 0;
while((by=fis.read())!=-1) {
System.out.print((char)by);
}
//方式2
byte[] bys = new byte[1024];
int len = 0;
while((len=fis.read(bys))!=-1) {
System.out.print(new String(bys,0,len));
}

fis.close();
4:字符流
(1)字节流操作中文数据不是特别的方便,所以就出现了转换流。   转换流的作用就是把字节流转换字符流来使用。
(2)转换流其实是一个字符流 字符流 = 字节流 + 编码表
(3)编码表
A:就是由字符和对应的数值组成的一张表
B:常见的编码表 ASCII ISO-8859-1 GB2312 GBK GB18030 UTF-8
C:字符串中的编码问题 编码 String -- byte[] 解码 byte[] -- String
(4)IO流中的编码问题
A:OutputStreamWriter
OutputStreamWriter(OutputStream os):默认编码,GBK
OutputStreamWriter(OutputStream os,String charsetName):指定编码。
B:InputStreamReader
InputStreamReader(InputStream is):默认编码,GBK
InputStreamReader(InputStream is,String charsetName):指定编码


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值