简介 目录 评价 推荐
  • 明月暖清风 2022-02-14

    5)序列化中,子类和父类构造函数的调用问题

    对子类对象进行反序列化操作时,如果其父类没有实现序列化接口,那么其父类的构造函数会被调用

    一个类实现了序列化接口,那么其子类都可以进行序列化

    0赞 · 0采集
  • 明月暖清风 2022-02-14

    4)transient关键字

    private void writeObject(java.io.ObjectOutputStream s)
           throws java.io.IOException

    private void readObject(java.io.ObjectInputStream s)
           throws java.io.IOException, ClassNotFoundException

    分析ArrayList源码中序列化和反序列化的问题

    0赞 · 0采集
  • 明月暖清风 2022-02-14

    字符流的过滤器

     BufferedReader  --->readLine 一次读一行

     BufferedReader/PrintWriter  --->写一行

    0赞 · 0采集
  • 明月暖清风 2022-02-14

    FileReader/FileWriter 

    直接操作文件,但文本文件无法处理编码格式,需要回归到InputStreamReader/OutputStreamWriter方法

    0赞 · 0采集
  • 明月暖清风 2022-02-14

    2、字符流

    1)编码问题

    2)认识文本和文本文件

    Java的文本(char)是16位无符号整数,是字符Unicode编码(双字节编码)

    文件是byte byte byte.....的数据序列

    文本文件是文本(char)序列按照某种编码方案(utf-8,utf-16be,gbk)序列化为byte的存储结果

    3)字符流(Reader Write)--->操作的是文本文件

    字符的处理,一次处理一个字符

    字符的底层任然是基本的字节序列

    字符流的基本实现

    InputStreamReader 完成byte流解析为char流,按照编码解析

    OutputStreamWriter 提供char流到byte客流,按照编码处理

    0赞 · 0采集
  • 明月暖清风 2022-02-11

    8)BufferedInputStream&BufferedOutputStream

    这两个流类位IO提供了带缓冲区的操作,一般打开文件进行写入或读取操作时,都会加上缓冲,这种流模式提高了IO的性能


    FileOutputStream--->write()方法相当于一滴一滴的把水转移过去

    DataOutputStream--->writeXxx()方法方便一些,相当于一瓢一瓢的把水转移过去

    BufferedOutputStream--->write()方法更方便,相当于一瓢一瓢先放入桶中,再从桶中倒入另一个缸中

    0赞 · 0采集
  • 明月暖清风 2022-02-10

    IO流分为输入流、输出流
    还有字节流、字符流
    1、字节流:
    (1)InputStream:抽象了应用程序读取数据的方式
    (2)OutputStream:抽象了应用程序写 出数据的方式
    2)EOF = End 读到-1就读到结尾
    3)输入流基本方法
    int b = in.read();读取一个字节无符号填充到int低八位.-1是EOF
    in.read(byte[] buf) 读取数据填充到字节数组buf
    in.read(byte[] buf,int start, int size)读取数据到字节数组buf从buf的start位置开始存放size长度分数据
    4)输出流基本方法
    out.write(int b)写出一个byte到流,b的低8位
    out.write(byte[] buf)将buf字节数组都写到流
    out.write(byte[] buf, int start,int size) 字节数组buf从start位置开始写size长度的字节到流

    5)FileInputStream--->具体实现了在文件上读取数据

    6)FileOutputStream--->实现了向文件中写出byte数据的方法

    7)DataOutputStream/DataInputStream

    对“流”功能得扩展,可以更加方面的读取int,long,字符等类型数据

    DataOutputStream

     writeInt()/writeDouble()/writeUT()

    0赞 · 0采集
  • 明月暖清风 2022-02-09

    IO流分为输入流、输出流
    还有字节流、字符流
    1、字节流:
    (1)InputStream:抽象了应用程序读取数据的方式
    (2)OutputStream:抽象了应用程序写 出数据的方式
    2)EOF = End 读到-1就读到结尾
    3)输入流基本方法
    int b = in.read();读取一个字节无符号填充到int低八位.-1是EOF
    in.read(byte[] buf) 读取数据填充到字节数组buf
    in.read(byte[] buf,int start, int size)读取数据到字节数组buf从buf的start位置开始存放size长度分数据
    4)输出流基本方法
    out.write(int b)写出一个byte到流,b的低8位
    out.write(byte[] buf)将buf字节数组都写到流
    out.write(byte[] buf, int start,int size) 字节数组buf从start位置开始写size长度的字节到流

    5)FileInputStream--->具体实现了在文件上读取数据

    6)FileOutputStream--->实现了向文件中写出byte数据的方法

    0赞 · 0采集
  • 明月暖清风 2022-02-08

    java.io.File类用于表示文件(目录)

    File类只用于表示文件(目录)的信息(名称、大小等),不能用于文件内容的访问


    RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件。支持随机访问文件,可以访问文件的任意位置。

    RandomAccessFile支持随机访问文件,可以访问文件的任意位置


    (1)java文件模型
     在硬盘上的文件时 byte byte byte存储的,是数据的集合
    (2)打开文件
    两种模式:“rw”(读写),“r”(只读)
    RandomAccessFile raf = new RandomAccessFile(File,"rw")
    文件指针,打开文件时指针在开头 pointer = 0;
    (3)写方法:
    raf.write(int)--->只写一个字节(后8位),同时指针指向下一个位置,准备再次写入
    (4)读方法:
    int b = raf.read()--->读一个字节
    (5)文件读写完成以后一定要关闭(Oracle官方说明)
    raf.close()

    0赞 · 0采集
  • 明月暖清风 2022-02-08

    package com.imooc.io;

    import java.io.File;
    import java.io.IOException;

    //列出File的一些常用操作,比如过滤、遍历等操作
    public class FileUtils {
       /**
        * 列出指定目录下(包括其子目录的)所有文件
        *
        * @param dir
        * @throws IOException
        */
       public static void listDirectory(File dir) throws IOException {
           if (!dir.exists()) {
               throw new IllegalArgumentException("目录:" + dir + "不存在.");
           }
           if (!dir.isDirectory()) {
               throw new IllegalArgumentException(dir + "不是目录!");
           }
    //        String[] filenames = dir.list();//返回的是字符串数组 直接子的名称,不包含目录下的内容
    //        for (String s : filenames) {
    //            System.out.println(dir + "\\" + s);
    //        }
           //如果要遍历子目录下的内容就需要构造成File对象的递归操作,File提供了直接返回File对象
           File[] files = dir.listFiles();//返回的是直接子目录(文件)的对象
           if (files != null && files.length > 0) {
               for (File file : files) {
                   if (file.isDirectory()) {
                       //递归
                       listDirectory(file);
                   } else {
                       System.out.println(file);
                   }
               }
           }
       }
    }

    0赞 · 0采集
  • 慕姐2471015 2021-04-07

    IO流分为输入流、输出流
    还有字节流、字符流
    1、字节流:
    (1)InputStream:抽象了应用程序读取数据的方式
    (2)OutputStream:抽象了应用程序写 出数据的方式
    2)EOF = End 读到-1就读到结尾
    3)输入流基本方法
    int b = in.read();读取一个字节无符号填充到int低八位.-1是EOF
    in.read(byte[] buf) 读取数据填充到字节数组buf
    in.read(byte[] buf,int start, int size)读取数据到字节数组buf从buf的start位置开始存放size长度分数据
    4)输出流基本方法
    out.write(int b)写出一个byte到流,b的低8位
    out.write(byte[] buf)将buf字节数组都写到流
    out.write(byte[] buf, int start,int size) 字节数组buf从start位置开始写size长度的字节到流

    0赞 · 0采集
  • 慕姐2471015 2021-04-07

    andomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件。支持随机访问文件,可以访问文件的任意位置。

    java文件模型
     在硬盘上的文件时 byte byte byte存储的,是数据的集合
    打开文件
    两种模式:“rw”(读写),“r”(只读)

    RandomAccessFile raf = new RandomAccessFile(File,"rw")
    文件指针,打开文件时指针在开头 pointer = 0;

    写方法:
    raf.write(int)--->只写一个字节(后8位),同时指针指向下一个位置,准备再次写入

    读方法:
    int b = raf.read()--->读一个字节

    文件读写完成以后一定要关闭
    raf.close()

    0赞 · 0采集
  • 慕姐2471015 2021-04-07

    import java.io.File;
    import java.io.IOException;

    // 列出file类的一些常用操作,不如过滤、遍历等操作
    public class FileUtils {
    public static void listDirectory(File dir) throws IOException{
    // exists()方法用于判断文件或目录是否存在
    if(!dir.exists()){
    throw new IllegalArgumentException("目录:" + dir + "不存在");
    }
    // isDirectory()方法用于判断File类的对象是否是目录
    if(!dir.isDirectory()){
    throw new IllegalArgumentException(dir + "不是目录");

    }
    // list方法用于列出当前目录下的子目录和文件
    /*String[] filenames = dir.list(); // 返回的是字符串数组 直接子的名称 不包含子目录下的内容
    for (String string : filenames) {
    System.out.println(dir + ":\\" + string);
    }*/
    // 如果要遍历子目录下的内容就需要构造成File对象做递归操作,File提供了返回File对象的API
    File[] files = dir.listFiles(); // 返回的是直接子目录(文件)的抽象
    //for (File file : files) {
    //System.out.println(file);
    if(files!=null && files.length > 0){
    for (File file : files) {
    if(file.isDirectory()){
    // 递归
    listDirectory(file);
    }else{
    System.out.println(file);
    }
    }
    }

    }



    }

    0赞 · 0采集
  • 慕姐2471015 2021-04-07

    java.io.File类在Java中表示文件或目录。
    File类只用于表示文件(目录)的信息(名称、大小等),不能用于文件内容的访问。

    创建File对象:File file=new File(String path);
    可以通过 alt+/ 查看构造函数
    注意:盘符后跟双斜杠 \\ 或者 /
    1. file.seperater();获取系统分隔符
    2. file.exists();是否存在.存在返回true,不存在返回false
    3. file.mkdir();或者file.mkdirs();创建目录或多级目录。
    4. file.isDirectory()或者file.isFile()判断是否是目录或者是否是文件。是返回true,不是为false
    5. file.delete();删除文件/文件夹。
    6. file.createNewFile();创建新文件。
    7. file.getName()获取文件名称。
    8. file.getAbsolutePath()获取绝对路径。
    9. file.getParent();获取父级绝对路径。

    1赞 · 0采集
  • 一只小马甲甲 2021-04-06

    这里说"不识别换行符" 我认为readLine就是通过换行符进行断行 读取断行前的内容并赋值.

    截图
    0赞 · 0采集
  • 一只小马甲甲 2021-04-06

    注意这里的 

    String line;

    和 !=null

    截图
    0赞 · 0采集
  • 一只小马甲甲 2021-04-06

    new InputStreamReader 中可以传递字符类型的参数.

    截图
    0赞 · 0采集
  • 一只小马甲甲 2021-04-06

    new BufferedReader 的参数是 Reader 类型 而这个Reader类型是 抽象类 无法直接new 可以通过 new InputStreamReader 来生成一个子类的对象

    截图
    0赞 · 0采集
  • 一只小马甲甲 2021-04-06

    把很大的数组直接构造为字符串.

    截图
    0赞 · 0采集
  • 一只小马甲甲 2021-04-06

    这里他在每次写入后都刷新缓冲区一次.

    截图
    0赞 · 0采集
  • 一只小马甲甲 2021-04-06

    注意这里的b 在write时也用到了b 来表示长度.

    截图
    0赞 · 0采集
  • 一只小马甲甲 2021-04-06

    这个图里 参数如果是数组类型 那读写都不是操作一个字节了 而是字节数组的长度.

    注意这里右下角的红字 是从start位置开始 读取(不确定)size个长度 写入out流


    另外网上关于write方法的其他写法

    void wrtie(String str):写一个字符串数据
    fw.write("abcde");
    字符串写入缓冲区。

    fw.write('a');
    fw.write(97);

    截图
    0赞 · 0采集
  • 一只小马甲甲 2021-04-06

    这个图里 参数如果是数组类型 那读写都不是操作一个字节了 而是字节数组的长度.

    截图
    0赞 · 0采集
  • 一只小马甲甲 2021-04-06

    注意是 符号. 填充到int的第位. 

    由于最后一个是EOF 也就是-1 所以这里返回的是int类型(c编程语言哪本书里讲过).

    截图
    0赞 · 0采集
  • 一只小马甲甲 2021-04-06

    EOF是 字节流 结束的标志.

    截图
    0赞 · 0采集
  • 一只小马甲甲 2021-04-06

    这里的0xff 可以把前面的0去掉

    截图
    0赞 · 0采集
  • 一只小马甲甲 2021-04-06

    一次写一个字节(后八位) 这里后八位就可以表示这个'A'

    第一次写完之后 文件里有一个字节 这个时候文件指针 raf 等于 1

    截图
    0赞 · 0采集
  • 一只小马甲甲 2021-04-06

    这个randomaccessfile 只读写一个字节.

    截图
    0赞 · 0采集
  • 一只小马甲甲 2021-04-06

    file.mkdirs() 创建多级目录.

    截图
    0赞 · 0采集
  • 一只小马甲甲 2021-04-06

    File类能访问文件内容.

    截图
    0赞 · 0采集
数据加载中...
开始学习 免费