`
yzmduncan
  • 浏览: 331070 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

java——流

阅读更多

在java.io.*包中,包含了java文件读写,输入输出流的各种类。

   流的分类

        节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader 
  处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader。处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。 

 

1. InputStream和OutputStream

      抽象类,实现了Closeable接口(OutputStream还实现了Flushable接口),表示所有字节(byte)输入输出流的基类。有些最基本的read和write方法。

Reader和Writer

      抽象类,实现了Readable接口和Closeable接口(Writer实现了Appendable,Flushable,Closeable接口),表示所有字符(两个字节,如:char)输入输出的基类。也有些最基本的read和write方法。

 

2. File

      继承Object,实现了serializabable和comparable接口。里面有些基本的对文件的操作

创建文件file.createNewFile(); 文件夹file.mkdirs();判断可读可写file.canRead();是目录还是文件dirFile.isDriectory();文件字节数file.length();返回当前路径下所有的文件及文件夹file.listFiles()。等等。。

 

3. 文件

FileInputStream与FileOutputStream;FileReader与FileWriter(节点流)

       接受一个File对象或者文件路径,将文件信息转化为byte[ ]或char[ ]。

 

4. 数组

ByteArrayInputStream ByteArrayOutputStream(CharArrayReader CharArrayWriter)(节点流)(对应的不是文件,而是内存中的一个数组)

         文件下载用到了这个,先将文件信息写入到ByteArrayOutputStream,再用new ByteArrayInputStream(ByteArrayOutputStream.toByteArray()),就可以将输出流转化为输入流。

 

5. 字符串

StringReader和StringWriter(节点流)

      其源为一个字符串的字符流。reader就没什么好说啦,从给定的字符串中读取数据。而StringWriter比较NB,它有一个toString()方法可以返回在缓冲区中的值(String)。比如想在数据输出以前显示一下(GUI设计),用StringWiter.toString()就很方便了。(类似于ByteArrayInputStream ByteArrayOutputStream)。

 

6. 管道

PipedInputStream PipedOutputStream (PipedReader PipedWriter) (节点流)

          暂时没用过。。

常用的处理流

缓冲流

7. BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter

        传入一个节点流,增加缓冲功能,避免频繁读写硬盘,可以初始化缓冲数据的大小,由于带了缓冲功能,所以就写数据的时候需要使用flush方法

 

转换流

8. InputStreamReader OutputStreamWriter——要inputStream或OutputStream作为参数,实现从字节流到字符流的转换。

 

数据流

9. DataInputStream DataOutputStream

        节省空间,比如long a = 1000000;实际上只用8个字节,用字符串的话要用7个字符(14个字节)。注意读的时候和写的时候顺序要一致。

 

Object流

10. ObjectInputStream ObjectOutputStream

        在这里就涉及到序列化的概念了,就是将一个对象整个存入硬盘。

相关知识:transient关键字--修饰成员变量,不写入该成员变量 。Serializable接口--表示接口,怎样实现的呢,在序列化之前,首先判断 (对象 instanceof Serializable)如果返回true则执行序列化,否者抛出异常,并且里面有一个ID,是用来快速查找某个对象的时候使用的。

 

打印流

11. PrintStream PrintWriter

       不会抛异常,自动flush。适合用在jsp页面打印。

PrintStream--继承自-->FilterOutputStream--继承自-->OutputStream(它的构造函数需要OutputStream对象)

PrintWriter---继承自-->Writer(它的构造函数需要Writer对象) 

System.in====InputStream

System.out===PrintStream

 

 

分享到:
评论

相关推荐

    精通JAVA——JDK(高清PDF文件)

    《精通JAVA——JDK》是一本深度探讨Java编程语言及其开发工具集JDK的专业教程,旨在帮助Java开发者提升技能,实现技术的精进。作为Java的基石,JDK(Java Development Kit)是学习和开发Java应用程序必不可少的工具...

    初学java——模拟路网(csdn)————程序.pdf

    初学Java——模拟路网(csdn)————程序 本资源归纳了初学Java——模拟路网(csdn)————程序的知识点,主要包括Java基础知识、红绿灯模拟、随机数生成、道路生成、车辆模拟等几个方面。 一、Java基础知识 ...

    Java————二次方程求解.doc

    在 Java 中,输入输出是通过流(Stream)来实现的。InputStream 和 OutputStream 分别对应输入流和输出流。BufferedReader 是一个输入流,用于从命令行读取用户输入。在本例中,我们使用 BufferedReader 读取用户...

    java——comm.jar串口通信包

    "java——comm.jar串口通信包"就是这样一个工具,它提供了Java语言进行串行通信的能力。这个库通常被称为Java.comm API,允许Java应用程序通过串行端口与外部设备进行数据交换,比如单片机。 Java.comm API是Sun ...

    Java——简易计算器

    下面我们将详细探讨这个"Java——简易计算器"项目中的关键知识点。 首先,让我们从基础开始。一个简单的Java计算器程序通常会包含一个主类(Main Class),在这个主类中,我们定义主方法(main method),它是程序...

    java——知识点归纳总结

    ### Java——知识点归纳总结 #### 概述 Java是一种简单且强大的面向对象编程语言,以其跨平台特性闻名,即“一次编写,到处运行”。Java语言的设计原则包括分布性、安全性、健壮性和多线程性,使其成为互联网时代...

    java——面试题

    除了以上问题,Java面试还可能涉及其他主题,如异常处理、多线程、集合框架、IO流、反射、设计模式、垃圾回收机制、JVM内存模型、数据库连接、Spring框架等。掌握这些核心概念和技术对于成为一名优秀的Java开发者至...

    java——1.rar_Java实习报告_java实习_java实习记录

    4. **IO流**:Java的IO流用于处理输入和输出,包括字符流和字节流,实习生可能需要编写读取文件、写入数据到文件的代码。 5. **多线程**:Java提供了丰富的多线程支持,通过Thread类或Runnable接口实现。实习生会...

    Java——Demo智能火车票购票系统源码.zip

    【Java——Demo智能火车票购票系统源码】是一个基于Java编程语言开发的示例项目,旨在展示如何构建一个简单的火车票预订系统。该系统利用了数据库技术,具体使用了MySQL作为后台数据存储,并且通过Java的JDBC(Java ...

    软件测试——java——ISTC2022

    下面我们将详细探讨Java软件测试的相关知识点,并结合提供的两个压缩包文件名——Calculator.zip和MoreTriangle.zip进行分析。 1. **单元测试**:在Java开发中,单元测试是验证代码模块功能是否按预期运行的基本...

    JAVA——文件处理(模仿windows界面)

    本项目显然旨在通过模仿Windows界面来实现一个简易的文件管理系统,这为我们提供了实践和理解Java I/O流、图形用户界面(GUI)以及事件处理的机会。以下是关于这个主题的一些关键知识点: 1. **Java I/O 流**:Java...

    java——飞机大作战

    此外,理解异常处理、IO流、线程等也是必不可少的。 2. **Java Swing或JavaFX**:"飞机大作战"可能使用了Java的Swing库或者JavaFX库来创建用户界面,这两个库提供了丰富的组件和工具来构建图形用户界面,如窗口、...

    Java——jdk1.8(64位和32位)

    这个版本在2014年发布,引入了许多新特性,如lambda表达式、流API(Stream API)、新的日期和时间API等。 2. **JDK与JRE**:JDK(Java Development Kit)是Java开发人员所需的完整工具集,包括JRE(Java Runtime ...

    Thinking in Java——自己手写的代码

    "Thinking in Java——自己手写的代码"这个压缩包很可能是作者在阅读这本书的过程中,为了加深理解和实践,自己编写的代码实现。 在压缩包"Think in Java 4 code"中,我们可以预期找到与《Thinking in Java》第四版...

    北大的java——ppt课件.rar

    5. **输入输出流**:Java的I/O流系统是处理数据输入和输出的重要部分,包括文件操作、网络通信等。 6. **多线程**:Java内置了对多线程的支持,可以创建和管理多个执行线程,提高程序的并发性能。 7. **字符串处理...

    【Java毕业设计】毕业设计——流媒体视频直播服务器(Java + MySQL + FFmpeg + RTSP + .zip

    【Java毕业设计】毕业设计——流媒体视频直播服务器(Java + MySQL + FFmpeg + RTSP) 这个毕业设计项目是基于Java技术实现的流媒体视频直播服务器,它整合了多种关键技术来构建一个完整的实时流媒体系统。以下是这...

    java基础——————试题库

    这份“java基础——————试题库”资源旨在帮助学习者系统地复习和深入理解Java的基础知识,确保他们能够全方位地掌握这一强大的编程工具。下面将详细阐述Java的基础知识点。 1. **Java简介** - Java是由Sun ...

    毕业设计——流媒体视频直播服务器(Java + MySQL + FFmpeg + RTSP + RTP).zip

    毕业设计——流媒体视频直播服务器(Java + MySQL + FFmpeg + RTSP + RTP)

Global site tag (gtag.js) - Google Analytics