黑马程序员_JavaSE的File和IO流

来源:互联网 发布:js获取所有id 像 编辑:程序博客网 时间:2024/06/05 02:59
------- <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-1GB2312 GBKGB18030 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
原创粉丝点击