`

IO流

    博客分类:
  • Io
Io 
阅读更多
                      IO包summarize
  以前学了Lang包还有Util(集合)包,以前的lang(基础)包,不需要导入就可以使用,而util(集合)包就要导入,现在IO(输入输出流)也是要导入才能使用的,如果不导入,就会报错
  IO流(input / output stream)
  File类
      代表与平台无关的文件和目录操作类
  A:访问文件名相关的方法
String getName()返回此File对象所表示的文件名或路径名(最后一级的文件夹名)
String getPath()返回此File对象所对应的路径名(跟创建相关)
File getAbsoluteFile()返回此File对象所对应的绝对路径所对应的file对象
String getAbsolutePath()返回此File对象所对应的绝对路径名(完整路径)
String getParent()返回此File对象对应目录(最后一级子目录)的父目录名
   B:文件检测相关的方法
boolean exists()判断File对应的文件或目录是否存在
boolean canWrite()判断File对象对应的文件或目录是否可写
boolean canRead()判断File对象对应的文件或目录是否可读
boolean isFile()判断File对象所对应的是否是文件,不是目录
boolean isDirectory()判断File对象所对应的是否是目录,不是文件
boolean isAbsolute()判断File对象所对应的文件或目录是否是绝对路径,在Windows等系统上,如果路径开头是盘符,则说明它是一个绝对路径
   C:获取常规文件信息
long lastModified()返回文件的最后修改时间
long length()返回文件内容的长度
   D:文件操作的相关方法
boolean createNewFile()当此File对象所对应的文件不存在时,该方法将新建一个该File对象所指定的新文件,创建成功返回true,否则返回false
boolean delete()删除File对象所对应的文件或路径
static File createTempFile(String prefix,String suffix)在默认临时文件目录中创建一个临时的空文件,使用给定前缀,系统生成的随机数和给定后缀作为文件名
   E:目录操作的相关方法
boolean mkdir()只能创建一个目录(文件夹)
boolean mkdirs()一次性可以创建多个目录(文件夹)
String [] list()列出File对象所有的子文件名和路径名,返回String数组
File [] listFiles()列出File对象的所有子文件和路径,返回File数组
static File[] listRoots()列出系统所有的跟路径,这是静态方法,可以直接调用
理解IO流
  什么是流?
      不同的输入/输出源(键盘,文件,网络连接等)抽象表述为“流”,(stream);stream是从起源(source)到接收(sink)的有序数据
流的分类:
  按照流的流向: 输入流和输出流
  输入流:只能从中读取数据,而不能向其写出数据
  输出流:只能向其写出数据,而不能从中读取数据
  按照流的数据单位的大小不同:字节流和字符流
  字节流:流动的数据最小单位是字节,也把字节流称为低级流
  字符流:流动的最小单位是字符
  按照流的功能分:节点流和处理流
  节点流:可以从/向一个特定的IO设备(如磁盘,网络/读/写数据的流)称为节点流,节点流常常也称为低级流
  处理流:对一个已存在的流进行连接或封装,通过封装后流来实现数据/读/写的功能,处理流也称为高级流
IO流的框架
  字节流的父类(抽象类(Abstract))
      InputStream:所有字节输入流的父类
      OutputStream:所有字节输出流的父类
  字符流的根类(抽象类)
      Reader:所有字符流的输入父类
      Writer:所有字符流的输出父类
InputStream(字节输入流)和Reader(字符输入流)
int read()从输入流中读取单个字节,返回所读取的字节数据(字节数据可以直接转换为int类型)








int read(byte[] b)从输入流中读取最多b.length个字节的数据,并将其存储在字符数组中,返回实际读取的字节数
int read(byte[] b,int off,int len)从输入流中读取最多len字节的数据,并将其存储在字节数组b中,并不是从数组起点开始,而是从off位置开始,返回实际读取的字节数
Reader的常用方法
1.    int read()从输入流中读取单个字符
2.int read(char[] b)从输入流中读取最多b.length个字节的数据,并将其存储在字符数组中,返回实际读取的字符数
3.int read(char[] b,int off,int len)从输入流中读取最多len字节的数据,并将其存储在字节数组b中,并不是从数组起点开始,而是从off位置开始,返回实际读取的字符数
OutputStream和Writer
void write(int c)将指定的字节输出到输出流中
void write(byte[] b)将字节数组中的数据写人到指定输出流中
void write(byte[] b,int off,int len)将字节数组从off位置开始,长度为len,字节写人到输出流中
Writer的常用方法
1.  void write(int c)将指定的字符输出到输出流中
2. void write(char [] b)将字符数组中的数据写人到指定输出流中
3. void write(char [] b, int off,int len)将字符数组从off位置开始,长度为len,字节写人到输出流中
常用方法:
void()关闭流
void mark(int readLimit)标记流
void reset()重新回到mark标记(将记录指针会退到mark标记处)
boolean markSupported()判断此输入流是否支持mark和reset方法
long skip(long n)可以跳过(放弃)n个数据字节
void flush()刷新此输出流并强制写出所有缓冲的输出字节
BufferedInputStream类和BufferedInputStream类
  缓冲流的作用:增加缓冲功能,可以提高输入输出的效率
管道流(PipedInputStream(输入流)和PipedOutputStream(输出流))
  作用:主要用于线程之间的通讯
DateInputStream和DateOutputStream
  用于读/写基本数据类型和String对象
PushbackInputStream
void unread(byte [ ] b)回退一个字节数组
void unread(byte [ ] b, int off, int len)回退一个字节数组
void unread(int b)回退一个字节
对象序列化(重点)
什么是对象序列化?
把“对象”任一时刻的状态,保存到外部介质的过程就叫序列化
什么是对象反序列化
反序列化是从外部介质读取数据并将数据还原成当初的“对象”的状态
实现对象序列化
a:实现Serializeble标志接口(简单)
b:实现Externalizable接口(自定义序列化)
递归序列化
当对某个对象进行序列化时,系统会自动把该对象的所有属性依次进行序列化,如果某个属性引用到另一个对象,则被引用的对象也会被序列化,如果被引用的对象的属性也引用了其他对象,则被引用的对象也会被序列化,这种被称为递归序列化
对象引用序列化
Java序列化机制
   a:所有保存到磁盘中的对象都有一个序列化编号
   b:当程序试图序列化一个对象时,程序将先检查该对象是否已经被序列化过,只有当该对象从未被序列化过,系统才会将该对象转换成字节序列并输出
transient变量
transient变量在序列化时不会被保存,如果是对象反序列化后就是null,如果是本类型,就是int(0),boolean(false),double(0.0)
自定义序列化 (Externalizable接口中的两个序列化与反序列化的方法)
a. void readExternal(ObjectInput in)显示自定义序列化的方法,用来恢复数据
b.void writeExternal(ObjectOutput out)实现自定义序列化的方法
     8. 两种序列化机制的比较
   实现Serializable接口:
   a. 系统自动存储必要信息
   b. java内建支持,易于实现,只需实现接口即可
   c. 无须任何代码支持,性能略差
   实现Externalizable接口:
   a. 程序员决定存储那此信息。
   b. 仅仅提供两个空方法,实现该接口必须为两个空方法提供实现。
   c. 性能略高。

9. 对象序列化注意问题
   a. 对象的类名,属性都会被序列化;方法,static属性,transient属性都不
      会被序列化
   b. 反序列化时必须有序列化对象的class文件
   c. 当通过文件,网络来读取序列化对象时,必须按实际写入的顺序读取
字符流:
转换流:InputStreamReader将字节输入流转换成字符输入流
OutputStreamWriter将字节输出流转换成字符输出流
  作用:
      转换成字符流操作更加方便一些
  BufferedWriter
  构造方法:
      BufferedWriter(Writer out)构造一个默认大小的缓冲区输出流
      BufferedWriter(Writer out,int size)指定一个具体大小的缓冲区输出流
          1.void newLine()换行
  BufferedReader
  构造方法:
      BufferedReader(Reader in)构造一个默认大小的缓冲字符输入流
      BufferedReader(Reader in,int size)指定一个具体大小的缓冲字符输入流
  LineNumberReader
    1.String readLine()读取一个问本行
    2.int getLineNumber()获得当前行号
    3.void setLineNumber(int C)设置当前行号
CharArrayReader 和 CharArrayWriter
  构造方法:CharArrayWriter()构建一个默认大小的字符输出流
            CharArrayWriter(int size)创建一个指定大小的字符输出流
void reset()清空缓冲区
int size()返回缓冲区大小
void writeTo(Writer out)将缓冲区的内容写入另一个字符流
PrintStream(打印流)
  构造方法:
    PrintStream(File file)构建一个以文件为输出源的打印流,将信息打印到文件
    PrintStream(OutputStream out)构建一个以输出流为源头的打印流,将信息打印到输出流,输出流可以是文件,终端(显示器),内存,网络
    PrintStream(OutputStream out,boolean autoFlush)构建一个打印流,autoFlush如果为true,则每当写入字节数组,调用其中一个println方法或写入新行字符或字节(‘\n’)时,都会刷新缓冲区
    PrintStream(String fileName)创建具有指定文件名称且不带自动行刷新的新打印流
什么是终端?
  System.out代表输出到终端
常用方法:
  PrintStream format(String format,Object … args)
  参数format:用于指定输出格式:%d,%c,%f,%b,%s
  %nd:n代表输出宽度
  PrintStream print(String format,Object … args)
  用于格式化输出,同上
  PrintWriter类跟PrintStream都用于打印输出,一个操作字符,另一个操作字节
RandomAccessFile:随即访问文件流
  既可以支持读的功能,也可以支持写的功能,支持“任意访问”的方式,可以直接转到文件的任意地方来读写数据
Long getFIlePointer()返回文件记录指针的当前位置
Void seek(long  pas)将文件记录指针定位到pas位置
还有一系列的read()和write()方法
构造方法:
  RandomAccessFile(File file,String mode)
  RandomAccessFile(String name,String mode)
  “Mode”参数:
      “r”以只读方式打开指定文件,如果试图对该RandomAccessFile执行写入方法都将会抛出IOException异常
       “rw”以读取、写入的方式打开指定文件,如果该文件不存在,则尝试创建新文件

分享到:
评论

相关推荐

    IO流、Xml解析

    在IT领域,IO流(Input/Output Stream)和XML解析是两个重要的概念,它们在数据处理和信息交换中起着核心作用。 IO流是Java编程语言中的一个关键特性,用于处理程序与外部设备(如硬盘、网络、内存等)之间的数据...

    IO流pdf宝典

    ### JAVA IO流概念及其应用详解 #### 一、JAVA为何引入流的概念? 在JAVA中,引入流的概念主要是为了实现对各种类型数据的高效处理。在实际应用中,无论是从网络中传输数据还是从本地文件中读取数据,亦或是与用户...

    Java-Io流,练习

    Java的IO流是Java编程语言中的重要组成部分,它主要用于数据的输入和输出操作。在Java中,IO流被设计为处理任何类型的数据,包括字符、字节甚至对象。本练习旨在帮助初学者理解和掌握Java IO流的基础知识。 一、IO...

    IO流 javaio java 流

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

    map集合以及IO流

    本文将深入探讨`Map`集合的特性和遍历方式,以及`Set`特性的排序,并介绍如何使用`IO流`,特别是字节流和字符流。 首先,我们来了解`Map`集合的基本概念。`Map`接口是Java集合框架的一部分,它不直接继承自`...

    JAVA IO流缓冲字节流缓冲字符流等流经典代码示例加注释总结.rar

    2、常用21个IO流:FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader、PrintWriter、BufferedReader、InputStream、...

    java基础之IO流

    ### Java IO流基础知识点 #### 一、IO流概述 - **定义**:在Java中,IO流(Input/Output Streams)是用来处理输入输出的基本工具。流是一种有序的数据集合,通常涉及从源到目的地的数据传输过程。源可以是文件、...

    Java基础篇:IO流.pdf

    Java IO流是Java编程语言中用于处理输入输出操作的一个重要概念。它允许程序读取数据源或向数据目的地写入数据。Java中的IO流主要分为输入流和输出流两大类,每类又可以根据数据处理方式的不同细分为多种具体实现。...

    Java中文件IO流.pdf

    Java 中文件 IO 流 Java 中文件 IO 流是指 Java 语言中对文件的输入输出操作,通过定义文件流来实现文件的读写操作。文件流是指在程序中用于文件输入输出的对象, Java 中提供了多种文件流类型,包括 InputStream ...

    IO流三种流方式的文本文件的复制

    在Java编程语言中,IO流(Input/Output流)是用来处理数据输入与输出的重要工具。在文本文件的复制过程中,通常会用到三种主要的流类型:字节流(Byte Stream)、字符流(Character Stream)以及缓冲流(Buffered ...

    IO流宝典.pdf

    Java IO流是Java平台核心特性之一,用于处理输入和输出数据。这个概念是Java编程中的基石,对于任何涉及数据传输或文件操作的应用程序都至关重要。《IO流宝典》这本书全面深入地探讨了这一主题,旨在帮助读者从基础...

    IO流的主要流

    Java中的IO流主要负责在不同数据源之间进行数据的传输,包括从文件系统、网络、内存等地方读取数据,以及向这些地方写入数据。IO流被设计为双工通道,既可以进行输入操作,也可以进行输出操作。Java的IO流体系结构...

    Java学生管理系统GUI+IO流

    Java学生管理系统GUI+IO流是一个适合初学者的项目,它主要展示了如何在没有数据库支持的情况下,利用Java的图形用户界面(GUI)和输入输出(IO)流来实现一个简易的学生和教师信息管理功能。这个系统可能包括账户...

    java之io流实例

    Java中的IO流是Java语言处理输入输出操作的重要组成部分,它为数据传输提供了强大的支持。本文将深入探讨Java的IO流实例应用,旨在帮助开发者更好地理解和掌握这一关键概念。 IO流在Java中分为两大类:字符流...

    彻底明白java中的IO流

    Java中的IO流是Java核心库java.io中的关键组成部分,它为程序提供了与外部资源交互的能力,包括文件读写、标准设备输入输出等。Java的IO流机制基于流的概念,流可以被视为数据传输的通道,数据按照序列化的方式从...

    Java图书管理系统(IO流版)(csdn)————程序.pdf

    Java图书管理系统(IO流版)知识点总结 本文总结了Java图书管理系统(IO流版)的主要知识点,涵盖了Java基础语法、流程控制、面向对象思想、封装、继承、多态、接口、异常、集合、IO流等多方面的知识。 一、Java...

    JAVA IO流技术

    Java IO流技术是Java平台中用于处理输入输出的重要机制,其核心在于数据的传输,从数据源到程序或从程序到目的地。在Java中,流分为两大类:输入流(InputStream、Reader)和输出流(OutputStream、Writer)。输入流...

    IO流的思维导图

    本人是初学者,在老师的指导下,将自身对Java中IO流的理解做成以下思维导图

    Java 的 IO流笔记.md

    ### Java IO流学习笔记 #### 一、IO流的四大抽象类 - **InputStream/OutputStream**:字节的输入输出流的抽象类。 - 数据单位:字节(8比特,范围0-255) - **Reader/Writer**:字符的输入输出流的抽象类。 - ...

    io流写入和读取

    "io流写入和读取"这个主题涵盖了如何使用IO流进行数据的存储和检索,通常涉及到文件操作、数据序列化以及与数据库的交互。在本篇文章中,我们将深入探讨这些关键知识点。 首先,IO流是Java中的一个基础概念,它允许...

Global site tag (gtag.js) - Google Analytics