黑马程序员——JAVA-IO
来源:互联网 发布:中国海关贸易数据库 编辑:程序博客网 时间:2024/05/22 03:44
----<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ------
异常
(1)程序出现的不正常的情况。
(2)异常的体系
Throwable
|--Error 严重问题,我们不处理。
|--Exception
|--RuntimeException运行期异常,我们需要修正代码
|--非RuntimeException 编译期异常,必须处理的,否则程序编译不通过
(3)异常的处理:
A:JVM的默认处理
把异常的名称,原因,位置等信息输出在控制台,但是呢程序不能继续执行了。
B:自己处理
a:try...catch...finally
自己编写处理代码,后面的程序可以继续执行
b:throws
把自己处理不了的,在方法上声明,告诉调用者,这里有问题
(1)程序出现的不正常的情况。
(2)异常的体系
Throwable
|--Error 严重问题,我们不处理。
|--Exception
|--RuntimeException运行期异常,我们需要修正代码
|--非RuntimeException 编译期异常,必须处理的,否则程序编译不通过
(3)异常的处理:
A:JVM的默认处理
把异常的名称,原因,位置等信息输出在控制台,但是呢程序不能继续执行了。
B:自己处理
a:try...catch...finally
自己编写处理代码,后面的程序可以继续执行
b:throws
把自己处理不了的,在方法上声明,告诉调用者,这里有问题
(4)finally关键字
A:finally用于释放资源,它的代码永远会执行。特殊情况:在执行到finally之前jvm退出了
B:异常处理的变形
try...catch...finally
try...catch...
try...catch...catch...
try...catch...catch...fianlly
try...finally
A:finally用于释放资源,它的代码永远会执行。特殊情况:在执行到finally之前jvm退出了
B:异常处理的变形
try...catch...finally
try...catch...
try...catch...catch...
try...catch...catch...fianlly
try...finally
(5)自定义异常
继承自Exception或者RuntimeException,只需要提供无参构造和一个带参构造即可
(6)异常的注意实现
A:父的方法有异常抛出,子的重写方法在抛出异常的时候必须要小于等于父的异常
B:父的方法没有异常抛出,子的重写方法不能有异常抛出
C:父的方法抛出多个异常,子的重写方法必须比父少或者小
继承自Exception或者RuntimeException,只需要提供无参构造和一个带参构造即可
(6)异常的注意实现
A:父的方法有异常抛出,子的重写方法在抛出异常的时候必须要小于等于父的异常
B:父的方法没有异常抛出,子的重写方法不能有异常抛出
C:父的方法抛出多个异常,子的重写方法必须比父少或者小
File
(1)IO流操作中大部分都是对文件的操作,所以Java就提供了File类供我们来操作文件
(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");
File file2 = new File(file,"a.txt");
(3)File类的功能
A:创建功能
(1)IO流操作中大部分都是对文件的操作,所以Java就提供了File类供我们来操作文件
(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");
File file2 = new File(file,"a.txt");
(3)File类的功能
A:创建功能
public boolean createNewFile():创建文件 如果存在这样的文件,就不创建了
public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了
public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来
B:删除功能
public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来
B:删除功能
public boolean delete()
C:重命名功能
C:重命名功能
public boolean renameTo(File dest)
D:判断功能
D:判断功能
public boolean isDirectory():判断是否是目录
public boolean isFile():判断是否是文件
public boolean exists():判断是否存在
public boolean canRead():判断是否可读
public boolean canWrite():判断是否可写
public boolean isHidden():判断是否隐藏
E:获取功能
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():获取最后一次的修改时间,毫秒值
F:高级获取功能
public String getName():获取名称
public long length():获取长度。字节数
public long lastModified():获取最后一次的修改时间,毫秒值
F:高级获取功能
public String[] list():获取指定目录下的所有文件或者文件夹的名称数组
public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组
public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组
IO流
IO流用来处理设备之间的数据传输。Java对数据的操作是通过流的方式。Java用于操作流的对象都在IO包中。输入流和输出流相对于内存设备而言。
将外设中的数据读取到内存中:输入。
将内存的数写入到外设中:输出。
流按操作数据分为两种:字节流与字符流。
字符流的由来:
其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表,获取对应的文字。再对这个文字进行操作。简单说:字节流+编码表。
IO流常用基类-字符流
字节流的抽象基类:InputStream,OutputStream。
字符流的抽象基类:Reader,Writer。
P.S.
由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
如:InputStream的子类FileInputStream。
如:Reader的子类FileReader。
需求:将一些文字存储到硬盘一个文件中。
记住:如果要操作文字数据,建议优先考虑字符流。
而且要将数据从内存写到硬盘上,要使用字符流中的输出流:Writer。
硬盘的数据基本体现是文件,希望找到一个可以操作文件的Writer:FileWriter。
字节流的抽象基类:InputStream,OutputStream。
字符流的抽象基类:Reader,Writer。
P.S.
由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。
如:InputStream的子类FileInputStream。
如:Reader的子类FileReader。
需求:将一些文字存储到硬盘一个文件中。
记住:如果要操作文字数据,建议优先考虑字符流。
而且要将数据从内存写到硬盘上,要使用字符流中的输出流:Writer。
硬盘的数据基本体现是文件,希望找到一个可以操作文件的Writer:FileWriter。
示例1:
- import java.io.FileWriter;
- import java.io.IOException;
- public class FileWriterDemo{
- public static void main(String[] args) throws IOException{
- //创建一个可以往文件中写入字符数据的字符输出流对象
- //既然是往一个文件中写入文字数据,那么在创建对象时,就必须明确该文件(用于存储数据的目的地)
- //如果文件不存在,则会自动创建
- //如果文件存在,则会被覆盖
- FileWriter fw = new FileWriter("demo.txt" );
-
- //调用Writer对象中的write(string)方法,写入数据
- //其实数据写入到临时存储缓冲区中
- fw.write( "abcde");
-
- //进行刷新,将数据直接写入到目的地中
- fw.flush();
- //关闭流,关闭资源,在关闭前会先调用flush刷新缓冲中的数据到目的地。
- fw.close();
- }
- }
P.S.
1. close方法只能用一次。2. 流关闭以后不能,不能再调用write方法,否则会报如下异常错误:
如果构造函数中加入true,可以实现对文件进行续写。
示例2:
- import java.io.FileWriter;
- import java.io.IOException;
- public class FileWriterDemo{
- public static void main(String[] args) throws IOException{
- FileWriter fw = new FileWriter("demo.txt" ,true);
- fw.write( "xixi");
- fw.close();
- }
- }
IO流的异常处理方式:为防止代码异常导致流无法关闭,因此在finally中对流进行关闭。
示例3:
- import java.io.FileWriter;
- import java.io.IOException;
- public class IOExceptionDemo{
- public static void main(String[] args){
- FileWriter fw = null;
- try{
- fw = new FileWriter("demo.txt" );
-
- fw.write( "abcde");
- } catch(IOException e){
- System.out.println(e.toString());
- } finally{
- try{
- fw.close();
- } catch(IOException e){
- throw new RuntimeException("关闭失败");
- }
- }
- }
- }
需求:读取一个文文件,将读取到的字符打印到控制台。(使用FileReader)
第一种读取方式:使用read()方法读取文本文件数据
第一种读取方式:使用read()方法读取文本文件数据
示例4:
- import java.io.FileReader;
- import java.io.IOException;
- public class FileReaderDemo{
- public static void main(String[] args) throws IOException{
- FileReader fr = new FileReader("demo.txt" );
- //用Reader中的read方法读取字符
- int ch = 0;
- while((ch = fr.read()) != -1){
- System.out.println(( char)ch);
- }
- fr.close();
- }
- }
第二种读取方式:使用read(char[])方法读取文本文件数据。
示例5:
- import java.io.FileReader;
- import java.io.IOException;
- public class FileReaderDemo{
- public static void main(String[] args)throws IOException{
- FileReader fr = new FileReader("demo.txt" );
- //使用read(char[])读取文本文件数据
- //先创建字符数组
- char[] buf = new char[3];
- int len = 0;
- while((len = fr.read(buf)) != -1){
- System.out.println( new String(buf,0,len));
- }
- fr.close();
- }
- }
字符流的缓冲区
缓冲区的出现提高了对数据的读写效率。
对应类:
BufferedWriter
BufferedReader
P.S.
缓冲区要结合流才可以使用。
作用:在流的基础上对流的功能进行了增强。
缓冲区的出现提高了对数据的读写效率。
对应类:
BufferedWriter
BufferedReader
P.S.
缓冲区要结合流才可以使用。
作用:在流的基础上对流的功能进行了增强。
示例6:提高写入效率,使用缓冲区。
- import java.io.BufferedWriter;
- import java.io.FileWriter;
- import java.io.IOException;
- public class BufferedWriterDemo{
- public static void main(String[] args) throws IOException{
- FileWriter fw = new FileWriter("buf.txt" );
- //为了提高写入的效率,使用了字符流的缓冲区
- //创建了一个字符写入流的缓冲区对象,并且指定与要被缓冲的流对象相关联
- BufferedWriter bufw = new BufferedWriter(fw);
- for(int x = 1; x <= 4; x++){
- //使用缓冲区的写入方法将数据先写入到缓冲区中
- bufw.write( "abcdef" + x);
- //写入内容换行方法:newLine();
- bufw.newLine();
- bufw.flush();
- }
- //使用缓冲区的刷新方法将数据刷目的地中
- bufw.flush();
- //关闭缓冲区,其实关闭的就是被缓冲的流对象
- fw.close();
- }
- }
字符流缓冲区:
写入换行使用BufferedWriter类中的newLine()方法。
读取一行数据使用BufferedReader类中的readLine()方法。
bufr.read():这个read方法是从缓冲区中读取字符数据,所以覆盖了父类中的read方法。
bufr.readLine():另外开辟了一个缓冲区,存储的是原缓冲区一行的数据,不包含换行符。
写入换行使用BufferedWriter类中的newLine()方法。
读取一行数据使用BufferedReader类中的readLine()方法。
bufr.read():这个read方法是从缓冲区中读取字符数据,所以覆盖了父类中的read方法。
bufr.readLine():另外开辟了一个缓冲区,存储的是原缓冲区一行的数据,不包含换行符。
示例7:
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.FileReader;
- import java.io.FileWriter;
- public class CopyTextBufTest{
- public static void main(String[] args) throws Exception {
- FileReader fr = new FileReader("buf.txt" );
- BufferedReader bufr = new BufferedReader(fr);
- FileWriter fw = new FileWriter("buf_copy.txt" );
- BufferedWriter bufw = new BufferedWriter(fw);
-
- String line = null;
- //方式一
- while((line = bufr.readLine()) != null){
- bufw.write(line);
- bufw.newLine();
- bufw.flush();
- }
- //方式二
- /*
- int ch = 0;
- while((ch = bufr.read()) != -1){
- bufw.write(ch);
- }
- */
- bufr.close();
- bufw.close();
- }
- }
0 0
- 黑马程序员——Java IO概述
- 黑马程序员——Java IO
- 黑马程序员——Java IO
- 黑马程序员——JAVA(IO 2)
- 黑马程序员——java IO
- 黑马程序员——java IO流
- 黑马程序员—java—IO流
- 黑马程序员——Java IO流
- 黑马程序员——Java IO流
- 黑马程序员——Java基础---IO
- 黑马程序员——java---IO
- 黑马程序员——java---IO总结
- 黑马程序员——java-IO流
- 黑马程序员——java基础--IO
- 黑马程序员——java---IO(一)
- 黑马程序员——java---IO(一)
- 黑马程序员——java---IO
- 黑马程序员——JAVA-IO
- 自定义Alert
- 【solr专题之三】Solr常见异常
- 新学到的两个关键字IBInspectable / IBDesignable
- C程序完成:父进程创建一个子进程,父进程对子进程设置一个报警信号,然后父进程等待子进程的结束,如果此时报警信号先到,就终止子进程。
- 【solr专题之四】关于VelocityResponseWriter
- 黑马程序员——JAVA-IO
- 【solr专题之二】配置文件:solr.xml solrConfig.xml schema.xml
- 阿里云服务器安全设置
- 通过 bitbake 移植 qrencode 到嵌入式
- 注册测绘师学习笔记(四)
- 修改Linux中的用户名
- 【转载】 Searching过程粗略梳理
- Android 颜色对照表
- 【转载】solr教程,值得刚接触搜索开发人员一看