java 我的笔记

java 我的笔记_第1张图片

在整个java.io包里面,File类是唯一一个与文件本身操作有关的类,但是不涉及到文件的具体内容。所谓的文件本身指的是文件的创建、删除等操作。

 

如果要想使用file类,那么首先就需要通过它提供的构造方法定义一个要操作文件的路径:

1、  设置完整路劲:publicFile(String pathname),大部分情况下使用此操作;

2、  设置父路径与子文件路径:publicFile(File parent,String child),Android上使用比较多


以上的程序已经完成了具体的文件创建与删除的操作,但是此时的程序会存在有两个问题:

java 我的笔记_第2张图片

         在进行java.io操作的过程之中,会出现有延迟情况,因为现在的问题是java程序是通过jvm间接的调用操作系统的文件处理函数进行的文件处理操作,所以中间会出现延迟情况

java 我的笔记_第3张图片

java 我的笔记_第4张图片




java 我的笔记_第5张图片

java 我的笔记_第6张图片

java 我的笔记_第7张图片

java 我的笔记_第8张图片

此时的确是已经可以列出目录中的内容了,但是所列出来的是子目录下的子目录火文件的名字。

范例:列出全部的file类对象

java 我的笔记_第9张图片

列出所有子路径

删除目录

3、File类虽然可以操作文件,但是并不是操作文件的内容,如果要进行内容操作只能通过两种途径完成:字节流、字符流。

对于java.io包而言它定义了两类流:

wKioL1biPhbiFB13AABF8xUk3a4093.png

java 我的笔记_第10张图片

 

java 我的笔记_第11张图片

最有意思的是在JDK1.7的时候引入了一个非常神奇的自动关闭机制,所以让Closeable又多继承了一个AutoCloseable接口,这个接口定义如下:

java 我的笔记_第12张图片

但是OutputStream类是在JDK1.0的时候就提供的,这个类原本就定义了close()flush()两个操作方法,所以现在以上的两个接口就几乎可以忽略了。

OutputStream类里面一共提供有三个输出的方法:

1、输出单个字节:public abstract void write(int b) throws IoException;

2、输出全部字节数组:piblic void write(byte[] b) throws IOException;

3、输出部分字节数组:public void write(byte[] b,int off,int len) throws IOException;

Outputstream本身是属于抽象类,如果想要为抽象类进行对象的实例化操作,那么一定要使用抽象类的子类,本

对于要进行的是文件操作所以可以使用FileOutputstream子类。在这个子类里面定义有如下的构造方法:

1、创建或覆盖已有文件:public FileOutputStream(File file) throws FileNotFoundException;

2、文件内容追加:public FileOutputStream(File file,Boolean append) throws FileNotFoundException


java 我的笔记_第13张图片

java 我的笔记_第14张图片

采用单个字节方式输出

java 我的笔记_第15张图片

输出部分字节数组内容


java 我的笔记_第16张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.4、字符输入流:Reader


java 我的笔记_第17张图片

与字节输入流相比结构几乎是一样的,只是数据类型由byte更换为了char而已。

 

字节流与字符流的区别?

现在已经给出了两种数据流,那么开发之中到底使用哪一种?有什么区别?

字节流与字符流最大的区别是:字节流直接与终端进行数据交换,字符流需要将数据经过缓冲区处理后才可以输出。

在使用outputStream输出数据的时候即使最后没有关闭输出流,那么内容也可以正常输出,但是反过来如果使用的

是字符输出流,如果不关闭,那么就表示在缓冲区之中处理的内容不会被强制性的清空,所以就不会清空数据

 

在开发之中,对于字节数据处理比较多的,例如:图片、音乐、电影、文章,而对于字符流最大的好处是它可以进行中文的有效处理,那么在日后开发之中,如果要处理中文的时候请先优先考虑字符流,如果没有中文问题,建议使用字节流。

总结:

wKiom1biWKLgt-VWAACR8V7kU74765.png

你可能感兴趣的:(java,IO)