热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java之I/O系统

Java之IO系统File类处理文件目录问题的工具类,可以代表一个特定文件的名称,也能代表一个目录下一组文件的名称。如果指的是一组文件集,可以对该集合调用list()方法,这

Java之I/O系统


File类

处理文件目录问题的工具类,可以代表一个特定文件的名称,也能代表一个目录下一组文件的名称。
如果指的是一组文件集,可以对该集合调用list()方法,这个方法会返回一个字符数组。


  1. 目录列表器

    • list():不带参数的方法,可以获得该目录下所包含的全部列表

    • list(FileNameFilter f):带目录过滤器作为参数,可以筛选获得我们想要的目录列表。需要实现一个实现了FileNameFilter接口的accept(File dir, String name)方法的类对象作为参数。list方法会为该目录下的所有文件名调用accept()方法一判断该文件是否包括在内。



  2. 目录实用工具

    • local()的使用被称为listFile()的File.list()的变体来产生File数组:

      • File[] local(File dir, final String regex) // 获取能匹配正则的文件夹名


      • File[] local(String path, final String regex)



    • walk()的使用可以产生给定目录下的由整个目录树中所有文件构成的List



  3. 目录的检查和创建

    • 检查:

      • 大小 file.length();

      • 最后修改日期 file.lastModified();

      • 可读写file.canRead()/file.canWrite()

      • 绝对路径:file.getAbsolutePath()

      • 父目录:file.getParent()



    • 创建 File file = new File(String name);

    • 删除:file.delete()




输入输出

流:代表任何有能力输出数据的数据源对象或者有能力接收数据的数据端对象。流的本质就是输入输出。
按照处理的数据类型,可以将流分为字节流和字符流。
字节流:以字节为单位,可以处理二进制文件,比如ppt,视频,图像等
字符流:以字符(2个字节为基本单位),可以处理纯文本文件,比如包含中文字符的文件。
4个基本的抽象流类型,所有的流都继承这四个。
输入流      输出流
字节流  InputStream  outputStream
字符流  Reader      Writer
IO流的特性:先进先出、顺序存取,只读或者只写


字节流



  1. ByteArrayInputStream:字节数组输入流,该类的功能就是从字节数组(byte[])中进行以字节为单位的读取,也就是将资源文件都以字节的形式存入到该类中的字节数组中去

  2. PipedInputStream:管道字节输入流,它和PipedOutputStream一起使用,能实现多线程间的管道通信。

  3. FilterInputStream :装饰者模式中处于装饰者,具体的装饰者都要继承它,所以在该类的子类下都是用来装饰别的流的,也就是处理类

  4. BufferedInputStream:缓冲流,对处理流进行装饰,增强,内部会有一个缓存区,用来存放字节,每次都是将缓存区存满然后发送,而不是一个字节或两个字节这样发送。效率更高

  5. DataInputStream:数据输入流,它是用来装饰其它输入流,它“允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型”

  6. FileInputSream:文件输入流。它通常用于对文件进行读取操作。直接操作文件流,与OS底层交互。因此他们也被称为节点流。需要关闭流对象,因为java垃圾回收器不会主动回收。不过在Java7之后,可以在 try() 括号中打开流,最后程序会自动关闭流对象,不再需要显示地close。

  7. File:对指定目录的文件进行操作,具体可以查看讲解File的博文。注意,该类虽然是在IO包下,但是并不继承自四大基础类。

  8. ObjectInputStream:对象输入流,用来提供对“基本数据或对象”的持久存储。通俗点讲,也就是能直接传输对象(反序列化中使用),
    其中:FileInputStream、FileOutputStream 文件的二进制输入输出流

    1. read()、write():按字节读写

    2. Bytes byte[] = new Bytes[1024];,read(byte)、write(byte):按字节数组大小读取




字符流



  1. Reader 是所有的输入字符流的父类,它是一个抽象类。

  2. CharReader、StringReader 是两种基本的介质流,它们分别将从Char 数组、String中读取数据。

  3. PipedReader 是从与其它线程共用的管道中读取数据。

  4. BufferedReader 很明显就是一个装饰器,它和其子类负责装饰其它Reader 对象。可以实现按行读写:readLine(); writeLine();

  5. FilterReader 是所有自定义具体装饰流的父类,其子类PushbackReader 对Reader对象进行装饰,会增加一个行号。

  6. InputStreamReader 是一个连接字节流和字符流的桥梁,它将字节流转变为字符流。 InputStreamReader in = new InputStreamReader(FileInputStream, “编码格式”);如果不设定编码格式可能会出现乱码。

  7. FileReader 可以说是一个达到此功能、常用的工具类,在其源代码中明显使用了将FileInputStream 转变为Reader 的方法。直接操作文件流,与OS底层交互。因此他们也被称为节点流。需要关闭流对象,因为java垃圾回收器不会主动回收。不过在Java7之后,可以在 try() 括号中打开流,最后程序会自动关闭流对象,不再需要显示地close。


Scanner类

用于扫描输入的文本Scanner s = new Scanner(System.in);if(s.hasNext()) s.next();if(s.hasNextLine()) s.nextLine();if(s.hasNextInt()) s.nextInt();....

推荐阅读
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • 小程序wxs中的时间格式化以及格式化时间和date时间互转
    本文介绍了在小程序wxs中进行时间格式化操作的问题,并提供了解决方法。同时还介绍了格式化时间和date时间的互相转换的方法。 ... [详细]
  • 本文介绍了在Android开发中使用软引用和弱引用的应用。如果一个对象只具有软引用,那么只有在内存不够的情况下才会被回收,可以用来实现内存敏感的高速缓存;而如果一个对象只具有弱引用,不管内存是否足够,都会被垃圾回收器回收。软引用和弱引用还可以与引用队列联合使用,当被引用的对象被回收时,会将引用加入到关联的引用队列中。软引用和弱引用的根本区别在于生命周期的长短,弱引用的对象可能随时被回收,而软引用的对象只有在内存不够时才会被回收。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 本文介绍了在Java中检查字符串是否仅包含数字的方法,包括使用正则表达式的示例代码,并提供了测试案例进行验证。同时还解释了Java中的字符转义序列的使用。 ... [详细]
  • Python中的PyInputPlus模块原文:https ... [详细]
  • 正则表达式及其范例
    为什么80%的码农都做不了架构师?一、前言部分控制台输入的字符串,编译成java字符串之后才送进内存,比如控制台打\, ... [详细]
  • 巧用arguments在Javascript的函数中有个名为arguments的类数组对象。它看起来是那么的诡异而且名不经传,但众多的Javascript库都使用着它强大的功能。所 ... [详细]
  • Stringpattern".*"+"a?I'm"+".*";FindIterable<Doc ... [详细]
author-avatar
手机用户2502914373
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有