Java IO总结

Java IO流分类:

按照输入输出分为:输入流,输出流,输入输出流的概念是相对的,相当于安在文件上的管道,新new出的InputStream对象是指磁盘文件等,每当程序要进行读操作时指的是从文件中读数据,对于文件来说是输出数据,但对于程序是读取/输入数据,应使用输入流,反之进行写操作时使用输出流。

按照流是否直接与特定的地方(如磁盘、内存、设备等)相连分为:节点流, 处理流

节点流可以直接new出来,而处理流相当于套在节点流管道上的一层管道,必须在节点流的基础上创建

如节点流 FileInputStream in = new FileInputStream("C:/java/a.txt");

而处理流如

InputStream in = new InputStream("C:/java/a.txt");

BufferedInputStream bin = new BufferedInputStream(in);

这样的形式带节点流对象参数或父类参数构造,直接BufferedInputStream bin = new BufferedInputStream("C:/java/a.txt");安在文件上是不行的

节点流分为字节流,字符流,字节流指每次读入写出一个字节一个字节的处理(1 Byte), 能处理所有类型数据,(图片,Long,Float等),字符流一个字符一个字符的处理(2 Byte),只能处理字符型数据

父  类  InputStream OutputStream(字节流)      Reader Writer (字符流) 全是抽象类

常用的节点流 :

对文件进行处理  FileInputStream FileOutputStream (字节流)     FileReader FileWriter (字符流)

对程序数组进行处理  ByteArrayInputStream  ByteArrayOutputStream  (字节流)    CharArrayReader  CharArrayWriter (字符流)

对字符串进行处理  (已废弃的StringBufferInputStream  StringBufferInputStream字节流)      StringReader StringWriter (字符流)

对管道进行处理 PipedInputStream  PipedOutputStream  (字节流)    PipedReader  PipedWriter (字符流)

常用的处理流:

1.缓冲流:BUfferedInputSream  BufferedOutputStream     BufferedReader   BufferedWriter

此类对像含mark()方法,类似标签

IO的缓冲区的存在就是为了提高效率,把要操作的数据放进缓冲区,然后一次性把缓冲区的内容写到目的地,而不是写一次就往目的地写一次.

在这里要注意的是当我们关闭了缓冲区对象实际也关闭了与缓冲区关联的流对象.

2.转换流: InputstreamReader OutputStreamWriter

将字节流转换成字符流,是字节流通向字符流的桥梁。如果不指定字符集编码,该解码过程将使用平台默认的字符编码,如:GBK。

3.数据流: DataInputStream DataOutputStream DataReader  DataWriter

提供了可存取Java基本数据类型的方法

4.Print流:(输出流)PrintWriter  PrintStream

提供了重载的print方法,能直接向管道中写数据,不会抛异常,有自动flush()功能

5.Object流 ObjectInputStream   ObjectOutputStream

直接将Object转换成字节流读入写出,称为对象的序列化,必须实现Serializable接口

transient关键字: 修饰成员变量,不写入该成员变量


 

时间: 2024-08-01 10:46:48

Java IO总结的相关文章

java IO之输入流——InputStream

java的基本输入流是java.io.InputStream,该抽象类定义了输入流的基本输入操作方法,实现自该抽象类的子类都有定义自己的数据源,例如ByteArrayInputStream的构造函数指定了ByteArrayInputStream输入流的数据源必须是一个字符数组.这就可以有多种不同的数据源,包括:字符数组.String对象.文件."管道".一个由其他种类的流组成的序列... 1 public ByteArrayInputStream(byte buf[]) {} 2 3

Hive报错 Failed with exception java.io.IOException:java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:user.name%7D

报错信息如下 Failed with exception java.io.IOException:java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:user.name%7D 解决方法: 编辑 hive-site.xml 文件,添加下边的属性 <property> <name>system:java.io.tmpdir<

java.io.IOException: No space left on device 错误

今天碰到比较奇怪的问题: 7/05/14 19:20:24 INFO util.Utils: Fetching http://192.168.31.160:33039/jars/spark_study_java-0.0.1-SNAPSHOT-jar-with-dependencies.jar to /tmp/spark-446068a4-aaa4-4277-b009-908bf0d4ecac/executor-dcc3175b-7d19-4485-81e1-bf31a83a66b4/spark-

【java】io流之字节输入流:java.io.InputStream类及子类java.io.FileInputStream

1 package 文件操作; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.IOException; 6 import java.io.InputStream; 7 8 public class TestInputStream { 9 public static void main(String[] args) throws IOException { 10 File file=new F

java io 学习

1,io 体系 在整个Java.io包中最重要的就是5个类和一个接口.5个类指的是File.OutputStream.InputStream.Writer.Reader:一个接口指的是Serializable.掌握了这些IO的核心操作那么对于Java中的IO体系也就有了一个初步的认识了. Java.io包中定义了多个流类型类实现输入输出的功能,从不同的角度可以分为: ~按照数据流方向的不同可以分为输入流和输出流. ~按照按照数据处理单位的不同可以分为字节流和字符流. 如下几张图可以直观的描述io

Java IO流 探险

Java的IO流使用了一种装饰器设计模式,它将IO流分为底层节点流和上层处理流.本篇重点在如何访问文件与目录.如何以二进制格式和文本格式来读写数据.对象序列化机制.还有Java7的"NIO.2". 装饰设计模式:当想要对已有的对象进行功能增强时,可以定义类,将已有对象传入,基于已有的功能,并提供加强功能.那么自定义的该类称为装饰类. 装饰类通常会通过构造方法接收被装饰的对象.并基于被装饰的对象的功能,提供更强的功能. IO的方式通常分为:BIO(同步阻塞).NIO(同步非阻塞).AIO

Play生产模式下java.io.FileNotFoundException那点事

之前”用Scala+Play构建地理数据查询接口”那篇文章里,用到的数据是json格式的文本文件area.json,存放在conf/jsons文件夹下.最开始是放在public/文件夹下,在线上准生产模式下运行: activator dist 得到mosquito-1.0.zip压缩包,解压后: 去/bin目录下运行mosquito脚本报错: java.io.FileNotFoundException 然后就去解压的mosquito-1.0/看发现并没有public文件夹,由此可见public文

keytool 错误: java.io.FileNotFoundException: 拒绝访问

keytool 错误: java.io.FileNotFoundException: 拒绝访问 打开命令行,切换到D:\AndroidStudioProjects\MyApplication\app目录 keytool 在JDK的/bin目录下,比如:/opt/jdk/bin 用以下的命令生成一个证书: keytool -genkey -alias android.key -keyalg RSA -validity 20000 -keystore android.key 老是报如题的错误: 后来

Java IO详解(转)

IO是Java及众多编程语言很重要的一块,同时很多程序的瓶颈和耗时操作也都在IO这块. 一.简介 IO操作面临很多问题,信息量的巨大,网络的环境等等,因为IO不仅仅是对本地文件.目录的操作,有时对二进制流.还有一部分是网络方面的资源,所以多种原因直接造成IO操作无疑是耗时且复杂多变的.Java对IO的支持是个不断的演变过程,经过了很多的优化,直到JDK1.4以后,才趋于稳定,在JDK1.4中,加入了nio类,解决了很多性能问题,虽然我们有足够的理由不去了解关于Java IO以前的情况,但是为了学

Java IO操作:合并流

合并流:把两个文件合并在一起. 主要操作的是内容. 定义: public class SequenceInputStreamextends InputStream 方法摘要: 操作步骤: 1,分别建立两个FileInputStream实例对象,用于输出指定两个文件. 2,建立一个FileOutputStream实例,用于合并写入两个文件. 2,通过SequenceInputStream类,把两个文件的内容合并起来,放到这个类实例流中. 3,把SequenceInputStream实例的内容读取出