• JAVA中的IO流


    一、File类
    1.如何创建File类的实例
    File(String filePath)
    File(String parentPath,String childPath)
    2.路径
    相对路径:相较于某个路径下,指明的路径
    绝对路径:包含盘符在内的文件或文件目录路径
    3.路劲分隔符
    Windows:\
    Unix:/
    4.常用的方法
    Public String getAbsolutePath()获取绝对路径
    Public String getPath()获取路径
    Public String getName()获取文件名称
    Public String getParent()获取上层文件目录路径。若无,返回null
    Public long length()获取文件长度(字节数)。不能获取目录的长度
    Public long lastModifed()获取最后一次得到修改时间,毫秒值
    Public String[] list()获取指定目录下的所有文件或者文件目录的File数组
    Public boolean renameTo(File dest):把文件重命名为指定的文件路径
    比如file1.renameTo(file2)为例
    要想保证返回true,需要file1在硬盘中是存在的,且file2不能在硬盘中存在。
    Public boolean isDirectory()判断是否是文件目录
    Public boolean isFile():判断是否是文件
    Public boolean exists():判断是否存在
    Public boolean canRead():判断是否可读
    Public boolean canWrite():判断是否写
    Public boolean isHidden():判断是否隐藏
    Public boolean createNewFile():创建文件。若文件存在,则不创建,返回false
    Public boolean mkdir():创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建
    Public boolean mkdirs():创建文件目录。如果上层文件目录不存在,一并创建
    Public boolean delete():删除文件或者文件夹
    要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录,否则删除失败
    Path toPath()将File对象转换成Path对象
    二、IO流原理及流的分类
    1.按操作数据单位不同分为:字节流,字符流
    2.按数据流的流向不同分为:输入流,处理流
    3.按流的角色不同分为:字节流,处理流
    4.流的体系结构
    在这里插入图片描述
    5.FileReader读入数据
    在这里插入图片描述
    read()方法的重载
    在这里插入图片描述
    说明点
    read()理解:返回读入的一个字符。如果达到文件末尾,返回-1
    异常处理:为了保证流资源一定可以执行关闭操作。需要使用try-catch-finally处理
    读入的文件一定要存在,否则就会报FileNotFoundException
    6.FileWrite
    在这里插入图片描述
    7.FileInputStream和FileOutputStream的使用
    =public static int available()返回流的字节数Inputstream的=
    在这里插入图片描述
    8.BufferedInputStream和BufferedOutputStream处理器的使用
    在这里插入图片描述
    在这里插入图片描述
    9.BufferedRead和BufferedWrite的使用
    在这里插入图片描述
    在这里插入图片描述
    10.结论:
    对于文本文件(.txt,.java,.c,.cpp) 使用字符流处理
    对于非文本文件(.jpg,.mp3,.mp4,.avi,.doc,.ppt,….)使用字节流处理
    11.图片加密
    在这里插入图片描述

    三、处理流之二:轮换流的使用
    1.转换流:属于字符流
    InputStreamReader:将一个字节的输入流转换为字符的输入流
    OutputStreamWriter:将一个字符的输出流转换为字节的输出流
    作用:提供字节流和字符流之间的转换
    解码:字节,字节数组—>字符数组,字符串
    编码:字节数组,字符串—>字节,字节数组
    字符集
    在这里插入图片描述
    在这里插入图片描述

    2.标准输入,输出流
    System类
    =System.in:标准的输入流,默认从键盘输入=
    =System.out:标准的输出流,默认控制态输出=
    =setIn(InputStream is)/setOut(PrintStream ps)方式重新指定输入和输出的流=
    在这里插入图片描述

    3.打印流(处理流)
    在这里插入图片描述
    4.数据流(处理流)
    在这里插入图片描述
    5.=对象流(处理流)=
    在这里插入图片描述
    在这里插入图片描述

    对象的序列化
    对象的序列化机制
    允许把内存中java对象转换成平台无关的二进制流,从而预允许把这种二进制流持久地保存到磁盘上,或通过网络将这种二进制流传输到另外一个网络节点。
    =序列化的好处在于可将任何实现了Serializable接口的对象转换为字节数据使其在保存和运输时可被还原=
    序列化是RML过程的参数和返回值都必须实现的机制,而RML是JAVAEE的基础。因此序列化机制是JAVAEE平台的基础
    如果需要让一个对象支持序列化机制,则必须让对象所属的类及其属性是可序列的,为了让某个类是可序列的,该类必须实现如下两个接口之一。否则,会抛出NotSerializableException异常
    serialVersionUID的说明:
    凡是实现Serializable接口的类都有一个表示序列化版本标识的静态变量:private static final long serialVersionUID=442281502185673631L;
    SerialVersionUID用来表明类的不同版本间的兼容性。器目的是以序列化对象进行版本控制,有关各版本反序列化是是否兼容
    如果类没有显示定义这个静态变量,它的值在java运行是环境根据类的内部细节自动生成的:=若类的实例变量做了修改,serlaVerslonUID可能发生变化=。故建议,显式声明
    简单的来说,java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常
    在这里插入图片描述
    在这里插入图片描述

    四、=RandomAccessFile的使用=
    1.RandomAccessFile直接继承于java.lang.Object类,实现了DataInput和DataOutput接口
    2.RandomAccessFile既可以作为一个输入流,又可以作为一个输出流
    3.如果RandomAxxessFile作为输出流时,写出文件如果不存在,则在执行过程中自动创建
    如果写出文件存在,则会对会话原有的内容进行覆盖,(默认情况下,从头覆盖)
    4.
    在这里插入图片描述
    5.RandomAccessFile实现插入数据
    在这里插入图片描述

    五、Path类
    1.static Path get(String first,String…more):用于将多个字符串串连成路径
    2.static Path get(URL url):返回指定url对应的Path路径
    3.boolean startsWith(String path):判断是否以path的路径开始
    4.boolean endsWith(String path):判断是否以path的路径结束
    5.boolean isAbsolutr():判断是否是绝对路径
    6.Path getParent():返回上级(父类)目录的路径
    7.Path getsRoot():返回调用Path对象的根路径
    8.Path getNameCount():返回与调用Path对象关联的文件名(返回文件名称)
    9.int getNameCount()返回Path根目录后面元素的数量
    10.Path getName(int index):返回指定索引位置index的路径名称
    11.Path toAbsolutePath():作为绝对路径返回调用Path对象
    12.Path resolve(Path p):合并两个路径,返回合并后的路径对应的Path对象
    13.File toFile()将Path转换为File类的对象 对应的有Path toPath()

  • 相关阅读:
    DevExpress的gridControl应用
    【TS】class类和接口
    全网最新版的超详细的xxl_job教程(2023年),以及解决“调度失败:执行器地址为空”的问题
    Timer实现简单计时控制器,毫秒级误差,浅谈守护线程和用户线程
    SQL 行转列
    【UE 网络】专用服务器和多个客户端加入游戏会话的过程,以及GameMode、PlayerController、Pawn的创建流程
    如何在使用 ES Modules 的 Node.js 应用中创建和使用 __dirname 和 __filename 这两个全局变量
    二分法模板(基础篇)+ 2022.8.9-每日一题(贪心)
    k8s--基础--24.1--efk--介绍
    基于R语言绘制GGE双标图2
  • 原文地址:https://blog.csdn.net/xiaosao_/article/details/127088906