一.创建文件的方式:一种方式即可 

方式一:

public void creat01(){
    String filePath = "E:\\news.txt";
    File file = new File(filePath);
    try {
        file.createNewFile();
        System.out.println("文件创建成功");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

只有执行了file.createNewFile();才会在磁盘里创建文件

方式2:

public void creat02()  {
    File parentFile = new File("e:\\");
    String filename  = "news2.txt";
    File file = new File(parentFile, filename);
    try {
        file.createNewFile();
        System.out.println("创建成功");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

获取文件的信息:

 常用文件操作:file.mkdir,创建一级目录,mkdirs创建多级目录,file.delete删除文件

二.IO流原理及其分类:用于处理数据,比如读写文件,网络通讯等。输入input:读取磁盘里的数据到内存中,输出output:读取内存里的数据输出到磁盘。

字节输入输出流都是针对二进制文件

字节输入流(InPutStream)常用的子类:1.FileInputStream 创建该类对象用于读取文件

 字节输出流:OutPutString:子类FileOutputStream

文件的拷贝:

 文件字符流:FileWriter,FileReader

读取整个文件:跟上述的差别不大

 首先创建文件路径,再创建一个文件读取对象,并把路径加入到其中,最后使用文件的读取(read)方法进行读取,最后再关闭文件字符流。

文件字符流:写入:

 上述都称为节点流。针对的是具体的数据源

此外还有处理流:也称为包装流,BufferReader有一个属性reader可以封装任意节点流(只要是reader的子类就可以),可以消除给各个节点流的差异,即一个类有什么类的属性,就可以封装那个类或者其子类。

处理流主要以缓冲的方式来提高输入输出的效率,提供了一大波便捷的方法批量处理数据.

处理流设计模式原理:一个抽象类,有几个子类继承了抽象类,其中有一个子类定义了那个抽象类即父类的一个属性,然后这个类就可以调用其余几个实现了父类方法的子类。

BufferReader就是一个包装流,里面有一个reader属性,可以包装reader的任意子类(节点流)按照字符读取数据,操作字符文件,操作其余非字符文件可能会损毁

包装流读取数据:

 包装流写入数据:

buffer的拷贝:

 有reader或者writer的称为字符流,有out put的称为字节流

操作二进制文件(如音频,视频,图片):BufferdInPutStream

Buffer进行二进制文件的拷贝

 对象流: 序列化:就是在保存数据时,保存数据的值和数据类型,反序列化:恢复数据时,恢复数据的值和数据类型。为了让某个类是可序列化的,则必须实现serializable(该接口无方法)或者externalizable(该接口有方法)接口。

对象输出流:

 对象输入流:

 注意事项:在反序列化时,即输入流(磁盘到内存),输出类的实例化对象时需要进行向上转型,那个类需要设置为公开型。其余注意事项看下图:

标准输入输出流:标准输入:System.in编译类型 InputStream,运行类型:BufferedInputStream

标准输出流:System.out,编译类型与运行类型一样:PrintStream

转换流:(又有put或out二者之一加上Input或Output之一)。InputStreamReader:Reader的子类,可以传入一个InputStream(字节流)的对象,并将其包装为Reader流。

 上述例子,如果不改变a.txt的编码,实际可以直接通过字符流BufferReader进行输入,但改变了编码方式,得先用InputStreamReader将字节流转换为字符流,然后再用字流进行输出。

配置文件:properties  对其进行读

 修改配置文件的内容:

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐