目录:系统学习 Java IO---- 目录,概览 ByteArrayInputStream 如果数据存储在数组中,ByteArrayInputStream 可以很方便读取,它可以返回 InputStream , 这样,ByteArrayInputStream 可以包装字节数组,并将其转换为流. 构造器 public ByteArrayInputStream(@NotNull byte[] buf) : 创建一个 ByteArrayInputStream ,以便它使用 buf 作为其缓冲区数组.…
字节数组流输于缓冲流,放在jvm内存中,java可以直接操作.我们使用时可以不用关闭,交给GC垃圾回收机制处理. 当然我们为了保持良好习惯和代码一致性也可以加上关闭语句. 当其实我么打开ByteArrayInputStream 和 ByteArrayOutputStream 源码可以发现字节数组里的colse() 方法是个空方法: /** * Closing a <tt>ByteArrayInputStream</tt> has no effect. The methods in…
Java IO 类的系统教程,原创.主要参考自英文教程 Java IO Tutorial 和 Java Doc. http://tutorials.jenkov.com/java-io/index.html 目的:掌握 Java IO 几乎所有类的基础用法,完全知道什么时候应该使用什么类. 分开学习,先系统学习 IO 所有的类,再另外学习 NIO . 目录: 系统学习 Java IO (一)----输入流和输出流 InputStream/OutputStream 系统学习 Java IO (二)…
目录:系统学习 Java IO ---- 目录,概览 InputStream 是Java IO API中所有输入流的父类. 表示有序的字节流,换句话说,可以将 InputStream 中的数据作为有序的字节序列读取. 这在从文件读取数据或通过网络接收时非常有用. InputStream 通常连接到某些数据源,如文件,网络连接,管道等 看如下代码片段: public class InputStreamExample { public static void main(String[] args)…
目录:系统学习 Java IO---- 目录,概览 PushbackInputStream 旨在从 InputStream 解析数据时使用. 有时您需要先读取几个字节以查看将要发生的事情,然后才能确定如何解释当前字节, PushbackInputStream 允许这样做. 实际上,它允许将读取的字节推回到流中,这样就像流没有被动过,下次调用 read() 时,将再次重新读取.通俗来讲,就像男人对女人(Stream)说:我只看看,不动手. 构造器 PushbackInputStream(Input…
目录:系统学习 Java IO---- 目录,概览 PrintStream 类可以将格式化数据写入底层 OutputStream 或者直接写入 File 对象. PrintStream 类可以格式化基本类型,如int,long等格式化为文本,而不是其字节值. 这就是为什么它被称为 PrintStream ,因为它将原始字节格式化为文本 - 就像它们在打印到屏幕(或打印到纸张)时看起来一样. 构造器 方法 描述 PrintStream(File file) 创建具有指定文件且不带自动行刷新的新打印…
目录:系统学习 Java IO---- 目录,概览 PipedInputStream 类使得可以作为字节流读取管道的内容. 管道是同一 JVM 内的线程之间的通信通道. 使用两个已连接的管道流时,要为每个流操作创建一个线程, read() 和 write() 都是阻塞方法,如果一个线程同时读写就会造成死锁 看一个例子: public class Pipe { public static void main(String[] args) throws IOException { final Pip…
目录:系统学习 Java IO---- 目录,概览 BufferedInputStream BufferedInputStream 类为输入流提供缓冲. 缓冲可以加快IO的速度. BufferedInputStream 不是一次从网络或磁盘读取一个字节,而是一次将更大的块读入内部缓冲区. 当从 BufferedInputStream 读取一个字节时,您正在从其内部缓冲区中读取它. 当缓冲区被完全读取时,BufferedInputStream 将另一个更大的数据块读入缓冲区. 这通常比从 Inpu…
目录:系统学习 Java IO---- 目录,概览 SequenceInputStream 可以将两个或多个其他 InputStream 合并为一个. 首先,SequenceInputStream 将读取第一个 InputStream 中的所有字节,然后读取第二个 InputStream 中的所有字节. 这就是它被称为 SequenceInputStream 的原因,因为 InputStream 实例是按顺序读取的. 构造方法 SequenceInputStream(InputStream s1…
目录:系统学习 Java IO---- 目录,概览 DataInputStream/DataOutputStream 允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型. 要想使用数据输出流和输入流,必须按指定的格式保存数据,才可以将数据输入流将数据读取进来,所以通常使用 DataInputStream 来读取 DataOutputStream 写入的数据. DataInputStream 类能够从 InputStream 中读取 Java 基本类型(int,float,lo…
目录:系统学习 Java IO---- 目录,概览 这两个流的作用是:"封装其它的输入流,并为它们提供额外的功能" 他们的直接子类有: BufferedInputStream 的作用就是为"输入流提供缓冲功能,以及 mark() 和 reset() 功能" DataInputStream 是用来装饰其它输入流,它"允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型" 接下来我们会对具体每一个展开分析的. FilterInput…
目录:系统学习 Java IO---- 目录,概览 Java IO目的和功能 Java IO 包含 InputStream,OutputStream,Reader 和 Writer 类的许多子类. 原因是,所有这些子类都在解决各种不同的目的. 所涉及的目的总结如下: 网络访问 内部缓冲区访问 线程间通信(管道) 缓冲 过滤 解析 读写文本(Reader/Writer) 读写基本类型数据(long,int等) 读写对象 Java IO类概述表 在讨论了 Java IO 类所针对的源,目标,输入,输…
目录:系统学习 Java IO---- 目录,概览 BufferedReader BufferedReader 类构造器接收一个 Reader 对象,为 Reader 实例提供缓冲. 缓冲可以加快 IO 的速度. BufferedReader 不是一次从网络或磁盘读取一个字符,而是一次读取一个更大的块. 这通常要快得多,特别是对于磁盘访问和更大的数据量. 类似于 BufferedInputStream ,主要区别在于 BufferedReader 读取字符(文本),而 BufferedInput…
目录:系统学习 Java IO---- 目录,概览 Reader Reader 类是 Java IO API 中所有 Reader 子类的基类. Reader 类似于 InputStream ,除了它是基于字符而不是基于字节的. 换句话说, Reader 用于读取文本,而 InputStream 用于读取原始字节. Writer Writer 类是 Java IO API 中所有 Writer 子类的基类. Writer 就像一个 OutputStream ,除了它是基于字符而不是基于字节的.…
目录:系统学习 Java IO---- 目录,概览 文件输入流 FileInputStream 这是一个简单的FileInputStream示例: InputStream input = new FileInputStream("D:\\input.txt"); int data = input.read(); while(data != -1) { //do something with data... doSomethingWithData(data); data = input.…
目录:系统学习 Java IO---- 目录,概览 跟踪行号的缓冲字符输入流 LineNumberReader LineNumberReader 类是一个 BufferedReader ,用于跟踪读取字符的行号.行号从 0 开始.每当 LineNumberReader 在包装的 Reader 返回的字符中遇到行终止符时,行号递增. 可以通过调用 getLineNumber() 方法获取当前行号,也可以通过调用 setLineNumber() 方法设置当前行号. 注意设置的行号不会改变实际的文件指…
目录:系统学习 Java IO---- 目录,概览 Java IO API 中的 File 类可以访问基础文件系统. 使用 File 类,可以: 检查文件或目录是否存在. 如果目录不存在,创建一个目录. 读取文件的长度. 重命名或移动文件. 删除文件. 检查路径是文件还是目录. 读取目录中的文件列表. 注意:"File"仅允许访问文件和文件系统元数据. 如果需要读取或写入文件内容,则应使用 FileInputStream,FileOutputStream 或 RandomAccessF…
目录:系统学习 Java IO---- 目录,概览 我们使用流后,需要正确关闭 Streams 和 Readers / Writers . 这是通过调用 close() 方法完成的,看看下面这段代码: ```java InputStream input = new FileInputStream("D:\out.txt"); int data = input.read(); while(data != -1) { //do something with data... doSometh…
上一节,我们分析了常见的节点流(FileInputStream/FileOutputStream  FileReader/FileWrite)和常见的处理流(BufferedInputStream/BufferedOutputStream  BufferedReader/BufferedWrite),经常而言我们都是针对文件的操作,然后带上缓冲的节点流进行处理,但有时候为了提升效率,我们发现频繁的读写文件并不是太好,那么于是出现了字节数组流,即存放在内存中,因此有称之为内存流:其中字节数组流也一…
字节数组流 ByteArrayInputStream:包含一个内部缓冲区,该缓冲区包含从流中读取的字节.内部计数器跟踪read方法要提供的下一个字节.关闭ByteArrayInputStream无效.此类中的方法在关闭此流后仍可被调用,而不会产生任何IOException. ByteArrayOutputStream:此类中实现了一个输出流.其中的数据被写入一个byte数组.缓冲区会随着数据的不断写入而自动增长.可使用toByteArray()和toString()获取数据.关闭ByteArra…
转换流 1.转换流:将字节流转换成字符流,转换之后就可以一个字符一个字符的往程序写内容了,并且可以调用字符节点流的write(String s)方法,还可以在外面套用BufferedReader()和BufferedWriter,并使用它们的readLine 和 newLine方法. 2.有两种转换流:InputStreamReader.OutputStreamWriter   练习小程序1: package test.io.transfer; import java.io.FileOutput…
一.字节数组流: 类 ByteArrayInputStream:在构造函数的时候,需要接受数据源,而且数据源是一个字节数组. 包含一个内部缓冲区,该缓冲区包含从流中读取的字节.内部计数器跟踪 read 方法要提供的下一个字节 关闭ByteArrayInputStream流无效.此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException   类 ByteArrayOutputStream:在构造函数的时候,不用定义数据目的,因为该对象中内部已经封装了可变长度的字节数组,这就是数据的…
一.字节数组流 之前使用输入输出流的操作的对象是文件,而这里字节数组流操作的对象是内存,内存可以看做是一个字节数组. 使用字节数组流读写就可以看做是从内存A到内存B的读写,对象时内存即字节数组. 1.1构造方法 ByteArrayOutputStream()//创建一个字符数组输出流 ByteArrayInputStream(byte[] buf)//创建一个字节数组输入流,这里面的buff可看做内存对象即字符数组 2.2主要方法 ByteArrayInputStream: read(byte[…
package IODemo; //字节数组流 :内部维护这着一个字节数组,我们可以利用流的读取机制来处理字符串 无需关闭,不会报IO异常 // ByteArrayInputstream ByteArrayOutputStream import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; public class byteArraySteamDemo { private static void byteA…
字节数组流 基于内存操作,内部维护着一个字节数组,我们可以利用流的读取机制来处理字符串.无需关闭,不会报IOException. ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节,内部计数器跟踪read方法要提供的下一个字节.关闭ByteArrayInputStream无效.此类中的方法在关闭流后仍可被调用,而且不会抛IOException. ByteArrayOutputStream 此类实现了一个输出流,其中的数据被写入一个byte数组,缓冲区会随着…
一:序列化的问题 1.序列号的使用问题 关于在序列化中的序列号的使用问题,一般要是使用. 因为,每次要序列化的类产生都会产生一个一个新的序列号,如果将这个类的程序修改后,就会产生新的序列号,以前序列化后的文件将不会被读取. 所以,为了程序修改后,以前序列化后的程序仍然可以被读取,使用静态的序列号十分有必要. 2.将数据进行序列化 中在ObjectOutputStream类. import java.io.FileOutputStream; import java.io.ObjectOutputS…
零基础如何系统学习Java Web?   我来给你说一说 你要下决心,我要转行做开发,这样你才能学成. 你要会打字,我公司原来有一个程序员,打字都是两个手一指禅,身为程序员你一指禅怎么写出的代码,半个月后被辞退了,当然我们还是朋友. 前两个条件都符合了你就可以学了,首先要了解web是什么,一般呢,java web开发无外乎就这么两大类,第一,互联网公司,第二,软件公司.对于互联网公司和软件公司还有一些差别,互联公司是面向广大网民的,会有专门的ui设计,前台开发,后台代码开发,ios开发,andr…
尽管可以通过不同的方式组合IO流类,但我们可能也就只用到其中的几种组合.下面的例子可以作为典型的IO用法的基本参考.在这些示例中,异常处理都被简化为将异常传递给控制台,但是这只有在小型示例和工具中才适用.在代码中,你需要考虑更加复杂的错误处理方式. 同样,本文会包括如下几个方面: 缓冲输入文件 从内存输入 格式化的内存输入 基本的文件输出 存储和恢复数据 读写随机访问文件 实用工具 总结 1. 缓冲输入文件 如果想要打开一个文件用于字符输入,可以使用以String或File对象作为文件名的Fil…
IO字节输入输出流 OutputStream:字节输出流 该抽象类是所有字节输出流的超类: 定义了一些共性的成员方法: 1.写入一个字节 void write(int b);//b表示字节 2.写入字节数组 void write(byte[] b);//写入一个字节数组 3.写入字节数组的一部分 void write(byte[] b,int off, int len);//off 表示起始索引,len表示写几个 4.刷新输出流,并强制写出所有缓冲的输出字节 void flush(); 5.关闭…
import java.io.*; public class ByteArrayStream { public static void main(String[] args) { byte[] datas = fileToByteArray("D:/test/1111.mp4"); byteArrayToFile(datas, "D:/test/byteArrayNew.mp4"); } public static byte[] fileToByteArray(St…