当前位置:文档之家› 传智播客黑马程序员javaIO流重点总结(必读)

传智播客黑马程序员javaIO流重点总结(必读)

传智播客黑马程序员javaIO流重点总结(必读)
传智播客黑马程序员javaIO流重点总结(必读)

IO流总结

异常

父类是Throwable,处理异常的两种方案,一种try --catch 另外一种抛出

熟练使用Try---catch---finally,注意:能和try一起使用的只有catch和finally关键字Try块里面存放的是有可能发生异常的代码,通常和catch块一起使用,catch块用于处理try块中抛出的异常,finally块不是必须的,通常将释放资源(例如IO流的close方法)的代码放到finally块里面

注意:finally和Final还有Finalize的区别

File类

注意:File类封装的路径,而不一定是一个具体的文件,File类不能用于读写文件,File类只能用来处理和文件相关的操作

构造方法

* File(String pathname):根据一个路径得到File对象

* File(String parent, String child):根据一个目录和一个子文件/目录得到File对象

* File(File parent, String child):根据一个父File目录和一个子文件/目录得到File对象

创建功能

* public boolean mkdir():创建文件夹如果存在这样的文件夹,就不创建了

* public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来

注意:mkdir只能创建单级目录,mkdirs用于创建多级目录

判断功能,

* public boolean isDirectory():判断是否是目录

* public boolean isFile():判断是否是文件

* public boolean exists():判断文件是否存在

注意:判断功能返回的都是布尔类型的

获取功能

* public String getName():获取名称

* public long length():获取长度。字节数

* public File[] listFiles():获取指定目录下的所有文件或者文件夹对象,返回的是File数组

* public File[] listFiles(FilenameFilter filter):注意:此方法需要传入筛选文件名的接口FileNameFilter,用于过滤文件

概念

* Input Output流用来处理设备之间的数据传输,Java中输入输出功能是通过流来实现,把数据写入文件需要创建流对象

* Java对数据的操作是通过流的方式

* Java用于操作流的类都在IO包中

* 流按流向分为两种:输入流,输出流。注意:读取文件都用输入流,写出文件都用输出流

* 流按操作类型分为两种:

* 字节流: 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的

* 字符流: 字符流只能操作纯字符数据,比较方便。

注意:IO流父类是java.io包下的抽象类,非接口!

字符流和字节流的区别在于每次读取的字节数不一样,字节流读取的是单个字节,而字符流读取的是单个字符,相当于两个字节.

字节流可以用于任何文件的拷贝,而字符流只能用于拷贝文本文件,通常都用字节流做拷贝,字符流只用于在只读或者只写的情况下.

字节流

|--InputStream(字节输入流,字节流的抽象父类,抽象类不能直接创建对象,必须使用子类)

|--FileInputStream(文件字节输入流,就是以字节的形式读取文件内容)

|--read()每次读取一个字节(byte),但是返回值类型,为int类型,防止出现文件提前结束

|--read(byte[] b)每次读取多个字节,将内容放入字节数组b中

|--BufferedInputStream(字节输入缓冲流,其实就是一个包装类,创建对象时要接收一个InputStream,内部封装了一个1024*8的字节数组)

|--使用BufferedInputStream就不用再定义数组了

|--OutputStream(字节输出流,字节流的抽象父类)

|--FileOutputStream(文件字节输出流,就是以字节的形式将内容写入到文件中)

注意:创建FileOutputStream时候在构造参数里面传入true,可以实现续写功能,即添加数据到末尾.

|--write(int b)一次写出一个字节

|--write(byte[] b)将字节数组b里的内容写入到文件中

|--write(byte[] b, int off, int len)将字节数组b里的内容,从索引为off的位置开始,总共写len个

注意:字节输出流没有直接写出字符串的功能,需要将字符串转为字节数组才能输出通过FileInputStream和FileOutputStream可以对任意类型的文件复制拷贝

|--BufferedOutputStream(字节输出缓冲流,其实就是一个包装类,创建对象时要接收一个OutputStream,内部封装了一个1024*8的字节数组)

字符流

|--Reader(字符输入流,字符流的抽象父类,抽象类不能直接创建对象,必须使用子类)

|--FileReader(文件字符输入流,就是以字符的形式读取文本文件中的内容)

|--read()每次读取一个字符,即可以按照字符大小读取,返回值类型提升为int类型

|--read(char[] b)每次读取多个字符,将内容放入字符数组b中

|--BufferedReader(字符输入缓冲流,其实就是一个包装类,注意:创建对象时要接收一个Reader,内部封装了一个1024*8的字符数组),例如传入FileReader或转换流InputStreamReader都可以

|--使用BufferedReader和BufferedWriter就不用再定义数组了

|--readLine()可以读取一行字符(不包含换行符号),注意:只有BufferReader才有读取一行的方法,其他流没有

|--newLine()是写入换行方法,根据不同系统平台可以执行相应换行操作,即可以跨平台|--LineNumberReader是BufferedReader的子类, 具有相同的功能, 并且可以统计行号|--getLineNumber()方法可以获取当前行号

|--setLineNumber()方法可以设置当前行号

|--Writer(字符输出流,字符流的抽象父类)

|--FileWriter(文件字符输出流,就是以字符的形式将内容写入到文件中)

|--write('a')/write("aaaa")可以写入单个字符或者写入字符串

|--write(char[] b, int off, int len)将字符数组b里的内容,从所以为off的位置开始,总共写len个

注意: FileInputStream和FileOutputStream用于读写字节流的

FileReader和FileWriter是用于读写字符流的

字符流不能用于图片的拷贝,只能拷贝文本文件

|--BufferedWriter(字符输出缓冲流,其实就是一个包装类,创建对象时要接收一个Writer,内部封装了一个1024*8的字符数组)

|--newLine()可以输出一个跨平台的换行符号"\r\n"

转换流(使用指定的码表读写字符)

|--InputStreamReader字节输入流到字符输入流的桥梁

|--OutputStreamWriter字符输出流到字节输出流的桥梁

其它流

|--SequenceInputStream序列流

|--序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时, 将从被整合的第一个流开始读, 读完一个之后继续读第二个, 以此类推.

|--SequenceInputStream(InputStream in1,InputStream in2)

|--SequenceInputStream(Enumeration en)

|--ByteArrayOutputStream字节数组内存输出流

|--是将文件或键盘录入的数据写入到内存中的字节数组

|--ByteArrayInputStream字节数组内存输入流

|--是以字节的方式读取内存中的字节数组数据

|--创建此对象要传递一个字节数组

|--RandomAccessFile随机读写访问流

|--该流同时具有读和写的功能

|--seek(long pos)设置读取和写入的位置

|--对象操作流

|--ObjectOutputStream将对象写入到文件,要求对象所属的类实现Serializable接口,该接口里面没有内容,只是一个标记,可以给此类添加个序列号ID,也可以不加.

|--writeObject()此方法将对象写到文件

|--ObjectInputStream将上面存入到文件中的对象读取出来,因为存的时候所有对象是按照Object存入,所以取出来要进行强制类型转换

注意:写出的对象需要实现序列化接口,即Serializable接口,否则报错

|--readObject()可以从文件读取对象出来

|--数据输入输出流

|--DataInputStream数据输入流,就是从文件读取特定类型的数据

|--readInt()从文件中读取一个int类型的数据

|--readLong()从文件读取一个long类型的数据

|--DataOutputStream数据输出流,向文件写出特定类型的数据

|--writeInt()向文件写入一个int类型的数据

|--writeLong()向文件写入一个long类型的数据

|--打印流PrintStream

注意:PrintWriter,只操作数据目的,不操作数据源,Println可以自动刷新,是Writer的子类

|--标准输入输出流

|--System.in是InputStream, 标准输入流, 默认可以从键盘输入读取字节数据

|--System.setIn(InputStream)修改输入流

|--System.out是PrintStream, 标准输出流, 默认可以向Console中输出字符和字节数据

|--System.setOut(PrintStream)修改输出流

|--键盘录入的两种方式

|--Scanner sc = new Scanner(System.in);

|--BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); |--Properties是Hashtable的子类,是一个Map,存放的是键值对,一般用于项目的配置文件,配置文件中键和值的类型都为String类型

|--setProperty(String key,String value)向Properties中存入键值对

|--getProperty(String key)根据键获取值

|--public Enumeration stringPropertyNames()以String的形式获取所有的键,并封装成Enumeration对象,之后进行遍历

|--load(InputStream inStream) 将字节输入流inStream所关联的文件中的值加载到Properties对象中

|--store(OutputStream out, String comments) 将Properties对象中的内容写入到out 流所关联的文件中,comments为说明信息

flush用来刷新缓冲区的,刷新后可以再次写出,即flush后流仍然可以使用

close用来关闭流释放资源的的,如果是带缓冲区的流对象的close()方法,不但会关闭流,还会再关闭流之前刷新缓冲区,关闭后不能再写出,即不能再使用该流

IO流的标准异常处理

相关主题
文本预览
相关文档 最新文档