字节流

java-IO文件流

别等时光非礼了梦想. 提交于 2019-12-22 00:38:13
先来看一下流的概念: 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据, 而当程序需要将一些数据保存起来的时候,就要使用输出流完成。 程序中的输入输出都是以流的形式保存的,流中保存的实际上全都是字节文件。 IO流: 字符流:主要用来处理字符或字符串,一个字符占两个字节 输入流:Reader-->BufferedReader,InputStreamReader 输出流:Writer-->BufferWriter,OutputStreamWriter,PrinterWriter,FilterWriter 字节流:主要用来处理字节byte或二进制对象 输入流InputStream-->FileInputStream,FilterInputStream, 输出流OutputStream-->FileOutputStream,FilterOutputStream 字节与字符流区别: 字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的 字节流在操作文件时,即使不关闭资源(close方法),文件也能输出,但是如果字符流不使用close方法的话,则不会输出任何内容 说明字符流用的是缓冲区,并且可以使用flush方法强制进行刷新缓冲区,这时才能在不close的情况下输出内容

Java IO流

被刻印的时光 ゝ 提交于 2019-12-22 00:37:34
一 IO 流 用于处理设备上数据 流 : 可以理解数据的流动 就是一个数据流 IO 流最终要以对象来体现 对象都存在 IO 包中 1. 流的分类 : 1 > 输入流 ( 读 ) 和输出流 ( 写 ) 2 > 因为处理的数据不同 分为字节流和字符流 2. 字节流 处理字节数据的流对象 设备上的数据无论是图片或者 dvd, 文字 , 它们都以二进制存储的 二进制的最终都是以一个 8 位为数据单元进行体现 所以计算机中的最小数据单元就是字节 意味着 字节流可以处理设备上的所有数据 所以字节流一样可以处理字符数据 3. 字符流 因为字符每个国家都不一样 所以涉及到了字符编码问题 那么 GBK 编码的中文用 unicode 编码解析是有问题的 所以需要获取中文字节数据的同时指定的编码表才可以解析正确数据 为了方便于文字的解析 所以将字节流和编码表封装成对象 这个对象就是字符流 只要操作字符数据 优先考虑使用字符流体系 4. 注意 流的操作只有两种 读和写 流的体系因为功能不同 但是有共性内容 不断抽取 形成继承体系 该体系一共有四个基类 而且都是抽象类 在这四个系统中 它们的子类 都有一个共性特点 子类名后缀都是父类名 前缀名都是这个子类的功能名称 5. 字节流 InputStream OutputStream 6. 字符流 Reader Writer public static void

Java输入输出(io)流详解、图解

时光毁灭记忆、已成空白 提交于 2019-12-22 00:37:10
stream代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源。在 Java 的IO中,所有的stream(包括Inputstream和Out stream)都包括两种类型:   (1)字节流   表示以字节为单位从stream中读取或往stream中写入信息,即io包中的inputstream类和outputstream类的派生类。通常用来读取二进制数据,如图象和声音。   (2)字符流   以Unicode字符为导向的stream,表示以Unicode字符为单位从stream中读取或往stream中写入信息。   区别:   Reader和Writer要解决的,最主要的问题就是国际化。原先的I/O类库只支持8位的字节流,因此不可能很好地处理16位的Unicode字符流。Unicode是国际化的字符集(更何况 Java 内置的char就是16位的Unicode字符),这样加了Reader和Writer之后,所有的I/O就都支持Unicode了。此外新类库的性能也比旧的好。   但是,Read和Write并不是取代InputStream和OutputStream,有时,你还必须同时使用"基于byte的类"和"基于字符的类"。为此,它还提供了两个"适配器(adapter)"类。InputStreamReader负责将InputStream转化成Reader

Java IO流详解

£可爱£侵袭症+ 提交于 2019-12-21 05:08:12
参考转载地址: https://blog.csdn.net/zhangliangzi/article/details/51226652         http://www.cnblogs.com/ysocean/p/6870069.html         https://www.cnblogs.com/jmsjh/p/7761272.html         http://blog.csdn.net/hguisu/article/details/7418161 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。 IO又分为流IO(java.io)和块IO(java.nio) Java.io是大多数面向数据流的输入/输出类的主要软件包。此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO。 流IO的好处是简单易用,缺点是效率较低。块IO效率很高,但编程比较复杂。 这里先讲流IO。 2.流的基本概念 在电脑上的数据有三种存储方式,一种是外存,一种是内存,一种是缓存。比如电脑上的硬盘,磁盘,U盘等都是外存,在电脑上有内存条

字节流与字符流的区别详解

☆樱花仙子☆ 提交于 2019-12-19 05:06:45
字节流与字符流 先来看一下流的概念: 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。 程序中的输入输出都是以流的形式保存的,流中保存的实际上全都是字节文件。 字节流与字符流 在 Java .io包中操作文件内容的主要有两大类:字节流、字符流,两类都分为输入和输出操作。在字节流中输出数据主要是使用OutputStream完成,输入使的是InputStream,在字符流中输出主要是使用Writer类完成,输入流主要使用Reader类完成。(这四个都是抽象类) java中提供了专用于输入输出功能的包Java.io,其中包括: InputStream,OutputStream,Reader,Writer InputStream 和OutputStream,两个是为字节流设计的,主要用来处理字节或二进制对象, Reader和 Writer.两个是为字符流(一个字符占两个字节)设计的,主要用来处理字符或字符串. 字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是音频文件、图片、歌曲

Java IO学习1:字节流与字符流

倖福魔咒の 提交于 2019-12-19 01:06:19
先来看一下流的概念: 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。 程序中的输入输出都是以流的形式保存的,流中保存的实际上全都是字节文件。 字节流与字符流 在java.io包中操作文件内容的主要有两大类:字节流、字符流,两类都分为输入 和输出操作。在字节流中输出数据主要是使用OutputStream完成,输入使的是InputStream,在字符流中输出主要是使用Writer类完 成,输入流主要使用Reader类完成。(这四个都是抽象类) 操作流程 在Java中IO操作也是有相应步骤的,以文件操作为例,主要的操作流程如下: 使用File类打开一个文件 通过字节流或字符流的子类,指定输出的位置 进行读/写操作 关闭输入/输出 IO操作属于资源操作,一定要记得关闭 字节流 字节流主要是操作byte类型数据,以byte数组为准,主要操作类就是OutputStream、InputStream 字节输出流:OutputStream OutputStream是整个IO包中 字节输出流的最大父类 ,此类的定义如下: public abstract class OutputStream extends Object implements Closeable,Flushable 从以上的定义可以发现

IO流——字节流

大城市里の小女人 提交于 2019-12-18 03:44:35
一、字节输出流 OutputStream OutputStream为抽象类,是表示输出字节流的所有类的超类。操作的数据都是字节,定义了输出字节流的基本共性方法。 1、方法: void close():关闭此输出流并释放与此流有关的所有系统资源。 void flush():刷新此输出流并强制写出所有缓冲的输出字节。 void write(byte[] b):将b.length个字节从指定的byte数组写入此输出流。 void write(byte[] b, int off, int len):将指定byte数组中从偏移量 off 开始的 len 个字节写入此输出流。 abstract void write(int b):将指定的字节写入此输入流。 2、FileOutputStream类 OutputStream 有很多子类,其中子类 FileOutputStream 可用来将数据写入到文件中。 FileOutputStream 类,即文件输出流,是用于将数据写入到 File 的输出流。 FileOutputStream 类的构造方法: FileOutputStream(File file):创建一个向指定File对象表示的文件中写入数据的文件输出流 FileOutputStream(String name):创建一个向具有指定名称的文件中写入数据的文件输出流 2.1

JAVA IO流

帅比萌擦擦* 提交于 2019-12-16 08:55:59
JAVA中的流分为输入流和输出流。其实还有打印流 输入流又分字节输入流和字符输入流(InputStream和Reader); 输出流又分字节输出流和字符输出流(OutputStream和Writer)。 网上找了张流接口的图 输入流: 字节输入流: InputStream :是所有的输入字节流的父类,它是一个抽象类。 FileInputStream:主要用来操作文件输入流。 read():从流中读取1个字节的数据,返回结果是一个int BufferedInputStream:字节缓冲流,提高效率。通常传入一个字节输入流实例化该对象再进行read操作 字符输入流: Reader:是字符输入流的抽象基类 FileReader :文件字符输入流。 BufferedReader:缓冲流,可以把字符输入流进行封装,将数据进行缓冲,提高读取效率 InputStreamReader :特殊输入流,转换流,用于字节输入流到字符输入流的转换(解决编码问题)。实例如下: public static void main(String[] args) throws IOException { //创建字节输入流 InputStream inputStream=new FileInputStream("D:\\字节缓冲输出流.txt"); //创建输入转换流 InputStreamReader

20191210——输入输出 IO流

早过忘川 提交于 2019-12-11 04:40:05
在变量、数组、对象和集合中存储的数据是暂时存在的,一旦程序结束它们就会丢失。为了能够永久地保存程序创建的数据,需要将其保存到磁盘文件中,这样就可以在其他程序中使用它们。Java 的 I/O(输入/输出)技术可以将数据保存到文本文件和二进制文件中, 以达到永久保存数据的要求。 本章首先从基础的流概念、流的分类、系统流的使用开始介绍,进而介绍如何操作文件、读取文件和写入文件。掌握 Java 中 I/O 处理技术能够提高读者对数据的处理能力。 什么是输出输入流 在 Java 中所有数据都是使用流读写的。流是一组有序的数据序列,将数据从一个地方带到另一个地方。根据数据流向的不同,可以分为输入(Input)流和输出(Output)流两种。 输入就是将数据从各种输入设备(包括文件、键盘等)中读取到内存中,输出则正好相反,是将数据写入到各种输出设备(比如文件、显示器、磁盘等)。例如键盘就是一个标准的输入设备,而显示器就是一个标准的输出设备,但是文件既可以作为输入设备,又可以作为输出设备。 数据流是 Java 进行 I/O 操作的对象,它按照不同的标准可以分为不同的类别。 按照流的方向主要分为输入流和输出流两大类。 数据流按照数据单位的不同分为字节流和字符流。 按照功能可以划分为节点流和处理流 输入流 Java 流功能相关的类都封装在 java.io 包中,而且每个数据流都是一个对象

JAVA 字符流与字节流的区别

风流意气都作罢 提交于 2019-12-06 19:32:48
Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。 Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换。而类 InputStreamReader 和 OutputStreamWriter 处理字符流和字节流的转换。字符流(一次可以处理一个缓冲区)一次操作比字节流(一次一个字节)效率高。 ( 一 )以字节为导向的 stream------InputStream/OutputStream InputStream 和 OutputStream 是两个 abstact 类,对于字节为导向的 stream 都扩展这两个鸡肋(基类 ^_^ ) ; 1、 InputStream 1.1 ByteArrayInputStream -- 把内存中的一个缓冲区作为 InputStream 使用 . construct--- (A)ByteArrayInputStream(byte[]) 创建一个新字节数组输入流( ByteArrayInputStream ),它从指定字节数组中读取数据( 使用 byte 作为其缓冲区数组) (B)---ByteArrayInputStream(byte[]