`
student_lp
  • 浏览: 431675 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

       java IO操作主要是指的是使用java进行输入、输出操作,java中的所有操作类都放在java.io包中。在这个java.io包中最重要的就是5个类和一个接口,5个类指的是File、OutputStream、InputStream、Write、Reader,一个接口指的是Serializable。掌握这些IO操作的核心就可以掌握了。

       Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。

       Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换。而类 InputStreamReader 和 OutputStreamWriter 处理字符流和字节流的转换。字符流(一次可以处理一个缓冲区)一次操作比字节流(一次一个字节)效率高。 

一、File类介绍

     在整个IO包中,唯一与文件本身有关的类就是File类。使用File类可以进行创建和删除文件等常用操作。

     ①File类的构造函数:public File(String pathName)-->实例化File类时,必须要设置好路径。

     ②File类中常用的方法


 注意:除了以上这些常用方法外,在File中还有一些静态常量字段也很有用,分别是:

separatorChar----public static final char separatorChar

与系统有关的默认名称分隔符。此字段被初始化为包含系统属性 file.separator 值的第一个字符。在 UNIX 系统上,此字段的值为 '/';在 Microsoft Windows 系统上,它为 '\'。

②separator----public static final String separator

与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。此字符串只包含一个字符,即 separatorChar。

③pathSeparatorChar----public static final char pathSeparatorChar

与系统有关的路径分隔符。此字段被初始为包含系统属性 path.separator 值的第一个字符。此字符用于分隔以路径列表 形式给定的文件序列中的文件名。在 UNIX 系统上,此字段为 ':';在 Microsoft Windows 系统上,它为 ';'。

④pathSeparator----public static final String pathSeparator

与系统有关的路径分隔符,为了方便,它被表示为一个字符串。此字符串只包含一个字符,即 pathSeparatorChar。

二、RandomAccessFile类

     File类仅仅是对文件本身进行操作的,而如果要对文件进行操作,则可以使用RandomAccessFile类。此类属于随机读取类,可以随机的读取一个文件中指定位置的数据,常用的方法如下:


 注意:如果使用rw方式声明RandomAccessFile对象,在写入的文件不存在时,系统将自动进行创建。

三、字节流

字节流主要操作byte类型数据,以byte数组为准,主要操作类是OutputStream和InputStream。

①先了解一下InputStream的作用和提供的方法

InputStream是从文件中把内容读取出来,InputStream本身是一个抽象类,必须依赖其子类。InputStream提供的方法如下:


 InputStream由于是一个抽象类,所以具体的实现还需要通过它的子类完成,下面就介绍一下有它衍生出来的子类,以及这些子类的作用。


FileInputStream:把一个文件作为 InputStream ,实现对文件的读取操作。

PipedInputStream :实现了 pipe 的概念,主要在线程中使用 . 管道输入流是指一个通讯管道的接收端。一个线程通过管道输出流发送数据,而另一个线程通过管道输入流读取数据,这样可实现两个线程间的通讯。

ByteArrayInputStream:从内存中每次读取一个字节的数据,然后保存到内置的缓冲区中。维持一个计数器用来记录从数据源中读入的字节数目。

      调用该输入流的close()方法不会产生任何实际的作用。因为它“关闭”的对象是---内存。而不是文件。不会抛出任何的IOException。

StringBufferInputStream: 把一个 String 对象作为 InputStream (已过时)。

注意:注释:不推荐使用 StringBufferInputStream 方法。 此类不能将字符正确的转换为字节。从一个串创建一个流的最佳方法是采用 StringReader 类。

SequenceInputStream :把多个 InputStream 合并为一个 InputStream . “序列输入流”类允许应用程序把几个输入流连续地合并起来,并且使它们像单个输入流一样出现。每个输入流依次被读取,直到到达该流的末尾。然后“序列输入流”类关闭这个流并自动地切换到下一个输入流。

DataInputStream:从底层的其它字节输入流中读取字节,然后转换成与机器无关的原始类型数据(boolean,byte,char)

BufferedInputStream:为底层的其它字节输入流增加一个“缓冲”的功能,除此之外还可以“标记”,“重置”输入流。当这个输出流的对象被创建时,一个内置的缓冲区也就被创建了。

 

      随着底层的输入流的不断读入,缓冲区中的数据也在不同刷新。一次性地从底层的输入流读入多个字节,方便后续的转码工作

②OutputStream提供将字节流写入到文件的功能。我们先查看一下OutputStream可以提供的操作:


 OutputStream也是一个抽象类,它功能的实现也是由其衍生子类完成,如下:


ByteArrayOutputStream : 该输出流能够将要写入内存的字节,先缓存到自身的缓冲区中。并且该缓冲区的大小可以自动增长。如果要从该输出流中提取字节,可以使用toByteArray,如果要还原为字符串,可以使用toString。

      关闭该输出流并不会产生任何的IOException,因为它的输出端是---内存而非文件。

FileOutputStream: 该输出流以原始字节(raw bytes)的方式向底层文件系统中写数据。在某些系统下,有时候只允许同一个文件

       打开一个输出流。所以如果该文件已经被打开了,则再次打开一个输出流会抛出异常。

PipedOutputStream: 管道输出流是指一个通讯管道的发送端。 一个线程通过管道输出流发送数据,而另一个线程通过管道输入流读取数据,这样可实现两个线程间的通讯。

PrintStream:为底层的输出流添加额外的功能,令到底层的输出流可以方便地输出各种经过“格式化”的数据。和其它输出流不同,该输出流并不会抛出IOException,但是可以通过checkError方法来检查是否有异常发生。

      该输出流具备自动flush功能,但写完一个字节数组,或者碰到一个println方法的调用,或者当要写出的字符是换行符时。会自动清空flush。

      默认情况下所有要写出的内存字符,都会被该输出流以平台默认编码方式,转换为字节流输出。

DataOutputStream:允许应用程序直接将基本类型数据(boolean, char, byte)直接写出到底层的输出流(内部转换为适当的字节)

BufferedOutputStream:为底层的输出流提供“缓冲”的功能,所有的写出请求和要写出的数据都会先缓冲到该输出流的缓冲区中,在适当的时机一次性写出。

      注意该类的write方法被调用时并不一定立即将内存中的数据写出到数据源,而可能先将数据缓存起来。

  • 大小: 103.5 KB
  • 大小: 131.6 KB
  • 大小: 60.2 KB
  • 大小: 82 KB
  • 大小: 73.3 KB
  • 大小: 48.1 KB
  • 大小: 58.5 KB
  • 大小: 48.8 KB
  • 大小: 68.9 KB
  • 大小: 44.2 KB
分享到:
评论

相关推荐

    彻底明白java的io系统

    Java的IO系统是Java编程中的核心部分,它允许程序与外部世界进行数据交换,包括读取文件、写入文件、网络通信以及设备交互等。理解并掌握Java的IO系统对于任何Java开发者,尤其是新手,都是至关重要的。在这个实例...

    java IO系统与正则表达式

    Java IO系统是Java平台中处理输入输出操作的核心组件,它为开发者提供了丰富的类库,用于读写文件、网络通信以及处理各种数据流。在Java中,IO系统主要由一系列的抽象类和接口组成,如InputStream、OutputStream、...

    Java IO系统资料

    Java IO系统是Java编程语言中不可或缺的一部分,它提供了丰富的类库来处理输入和输出操作,包括文件读写、网络通信、数据转换等。这个资料包包含了一份PPT、一个源代码示例以及一些相关的文档,旨在帮助我们深入理解...

    java io 结构图

    总之,Java IO系统为开发者提供了强大而灵活的工具来处理输入输出操作,无论是简单的文本文件,还是复杂的网络通信,都可以通过这个框架高效地实现。深入理解这个结构图对于提升Java编程能力至关重要。

    Java,彻底明白Java语言中的IO系统

    Java,彻底明白Java语言中的IO系统 Java,彻底明白Java语言中的IO系统 java基础知识

    java-IO框架图

    例如,javaio.bmp和javaio2.bmp可能是两张展示IO框架图的图片,其中详细描绘了不同类之间的继承关系和使用场景,帮助开发者更好地理解和掌握Java IO系统。 总结一下,Java IO框架是Java平台不可或缺的一部分,它为...

    Java IO 使用例

    Java IO系统是基于流(Stream)的,数据通过流在源和目的地之间传输。 标题“Java IO 使用例”指的是通过具体的代码示例来展示Java IO的各种操作,如读取文件、写入文件、复制文件、处理字符流和字节流等。下面我们...

    java io.pdf

    1. **流(Streams)**:Java IO的核心概念是流,它们代表数据的源和目的地。流可以是字节流或字符流,分为输入流和输出流。字节流处理单个字节的数据,而字符流处理Unicode字符,如UTF-8编码。 2. **节点流(Nodal ...

    Java IO知识点

    了解这些基础知识后,可以更有效地处理Java程序中的输入输出操作,无论是文件操作、网络通信还是系统间的数据交互。在开发过程中,正确选择和使用Java IO流能够提高程序的效率和灵活性,是每个Java开发者必备的技能...

    彻底明白 Java 语言中的IO系统

    彻底明白 Java 语言中的IO系统 彻底明白 Java 语言中的IO系统

    IO流 javaio java 流

    Java中的IO流是Java核心库的重要组成部分,它用于在不同数据源之间传输数据。Java IO流分为两大类:字符流(Character Stream)和字节流(Byte Stream)。字符流处理单个字符,而字节流处理8位的字节序列。它们又...

    Java IO 编程集合

    1. InputStream与OutputStream:这是Java IO体系中的两大基本接口,分别用于数据的读取和写入。InputStream代表字节输入流,OutputStream代表字节输出流。它们是所有字节流类的基类,包括文件读写的相关类。 二、...

    JavaIO.ppt

    Java 的 IO 流主要包括输入、输出两种 IO 流,每种输入、输出流有可分为字节流和字符流两大类: 字节流以字节为单位来处理输入、输出操作 字符流以字符为单位来处理输入、输出操作

    java io流 案例

    总的来说,Java IO流是Java程序进行输入输出操作的基础,无论是读取配置文件、处理用户输入、还是与其他系统交换数据,都离不开IO流。通过深入学习和实践,开发者可以有效地管理和控制程序的数据流动,从而实现各种...

    彻底明白Java的IO系统

    Java NIO(New IO)是自Java 1.4引入的一个重要特性,提供了非阻塞I/O操作。NIO的核心组件包括通道(Channel)和选择器(Selector)。通道类似于流,但可以同时进行读写操作,且支持异步数据传输。选择器允许单线程...

    Java IO合集

    Java IO和NIO是Java平台中用于输入/输出操作的核心组件。这两个库为开发者提供了处理数据传输的强大工具,无论是在磁盘、网络还是内存中。本合集包含了两本关于这些主题的专业书籍——"Java IO"和"Java NIO",它们...

    java基础之IO流

    java基础之IO流,基础简介知识,帮助你了解java的io技术

    Java IO 工具类大全

    Java IO(Input/Output)是Java平台中处理输入与输出数据的核心部分,它提供了丰富的类库,使得开发者能够高效地进行文件、网络、内存以及其他I/O流的操作。本篇文章将全面解析Java IO工具类,帮助你理解并掌握其在...

    Java io的基本操作很全面的代码呀

    总的来说,Java IO是一个复杂但强大的系统,它涵盖了从简单的文件操作到复杂的网络通信的各种需求。这个"Java io的基本操作很全面的代码"项目无疑是学习和实践Java IO的宝贵资源,可以帮助开发者深入理解和熟练运用...

    JavaIO大部分类

    在Java 7中,IO系统经过了重大改进,引入了许多新特性,使得数据读写更加高效和方便。本篇将深入探讨Java IO中的核心类、流的概念、缓冲区技术以及NIO(New IO)框架。 1. **核心IO类** - `InputStream` 和 `...

Global site tag (gtag.js) - Google Analytics