什么是IO流 先看一段百度上的解释: 当然:如果你看不懂,那么你只需要记住下面3句话. 1. (3).那么这当中的水流,便可以理解为IO流。 2. 那么JAVA中的IO流呢; (1).在java中,java就是自来水厂,水源地就是源,家就是目的 (2). gbk”); OutputStreamWriter 使用: OutputStreamWriter osw = new OutputStreamWriter(os, “ISO-8859-1”); IO (2).字符流 以下就是字符流的详细: 字符流是字节流的类似。 创建转换流对象 输 出流对象, 输出的编码 OutputStreamWriter osw = new OutputStreamWriter(os,“ISO-8859-1”); 以上就是IO流的简单介绍
2.2、流的分类 按操作数据单位不同分为:字节流(8 bit),字符流(16 bit) 按数据流的流向不同分为:输入流,输出流 按流的角色的不同分为:节点流,处理流 抽象基类 字节流 字符流 输入流 InputStream 为了提高数据读写的速度,Java API提供了带缓冲功能的流类,在使用这些流类时,会创建一个内部缓冲区数组,缺省使用8192个字节(8Kb)的缓冲区。 * UTF-8:变长的编码方式,可用1-4个字节来表示一个字符。 面向传输的众多UTF(UCS Transfer Format)标准出现了,顾名思义,**UTF-8就是每次8个位传输数据,而UTF-16就是每次16个位。 推荐的Unicode编码是UTF-8和UTF-16。
之前我们使用io流,都是需要一个中间数组,管道流可以直接输入流对接输出流,一般和多线程配合使用,当读取流中没数据时会阻塞当前的线程,对其他线程没有影响 定义一个类Read实现Runable接口,实现run ()方法,构造方法传递PipedInputStream对象 读取流里面的数据 定义一个类Write实现Runable接口,实现run()方法,构造方法传递PipedOutputStream对象 写入流里面数据 获取PipedInputStream对象,new出来 获取PipedOutputStream对象,new出来 调用PipedInputStream对象的connect()方法,对接输出流,参数:PipedOutputStream 对象 开启两个线程执行读写 import java.io.IOException; import java.io.PipedInputStream; import java.io.PipedOutputStream
目录 IO流使用cout进行输出cout格式化调整字节宽度以及填充字符setf()相关字符串流文件流 IO流 C++兼容C,所以C中的输入输出函数依然可以在C++中使用,但是直接把C的那套输入输出搬到 ss2 << num << ch << str; cout << ss2.str() << endl; return 0; } 输出: 100 192 168 0 1 . 3.14159 文件流 头文件: #include<fstream> 文件流常用函 描述 open 打开文件 is_open 文件是否被打开 close 关闭文件 getline 读取一行 read 输入(读)到对象 write 将缓冲区的数据写出到文件,再清空它 tellg 输入(读)文件指针位置 tellp 输出(写)文件指针位置 seekg 设置输入(读)文件指针位置 seekp 设置输出(写)文件指针位置 eof 是否到了流尾部
IO流 文件操作 File类 作用 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作 构造方法 public File(String pathname ,为输出流,把电脑磁盘当中的数据加载到程序当中为输入流 示例图 IO的分类 根据数据的流向分: 输入流 把数据从 其他设备 上读取到 内存 中的流。 Reader类 作用 java.io.Reader 抽象类是表示用于读取字符流的所有类的超类,可以读取字符信息到内存中。 字符缓冲流: BufferedReader , BufferedWriter 基本原理 缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组, 通过缓冲区读写,减少系统IO 次数 有三种编码方案 UTF-8、UTF-16和UTF32,最为常用的UTF-8编码 UTF-8编码,可以用来表示Unicode标准中任何字符,它是电子邮件、网页及其他存储或传送文字的应用 中,优先采用的编码
字节流处理字节数据 字符流处理字符数据 按处理数据分为节点流和处理流 节点流 文件流 数组流 管道流 处理流 缓冲流 转换流 基本数据流 对象序列化流 打印控制流 IO流属于阻塞操作,一般项目中应放到子线程中 FileOutputStream void write(int b) //只读取低8位 void write(byte[] b) 只能处理字符数据 2.3.1 InputStreamReader和OutputStreamWriter 字节流转换成字符流 其构造函数,第一个参数是字节流,第二参数指定是字符集一般写utf-8 InputStreamReader FileOutputStream(file2,true); InputStreamReader isr = new InputStreamReader(fis,"UTF-8" ); OutputStreamWriter osr = new OutputStreamWriter(fos,"UTF-8"); int num;
编码问题 File类 RandomAccessFile 按照数据流的不同分为·:输入流和输出流 按照处理数据单位不同可以分为:字节流和字符流 1.Java中的输入输出都是以流的形式(文件读写,网络传递) (如:复制一段文字或者图片) 2.编码问题 介绍三种 gbk编码:中文2个字节,英文1个字节 utf-8:中文3个字节 英文1个字节 utf-16be:中文2个字节 英文2个字节 当你的字节序列是某种编码时 Java是双字节编码utf-16be 3.File类 java.io.File类用于表示文件(目录), File类只用于表示文件的信息(名称,大小等)不能用于文件内容的访问 第一个标识中需要介绍 而后缀为Reader,Writer是字符流 下面是一个字符流中读的Demo(记得要关掉流)《输入流》 下面是一个字符流中写的Demo(记得要关掉流)《输出流》 这里记得要刷新流flush :字符流 写入数据 其他多种多样的流都是继承了它们,并进行了装饰而派生出来的加强版 (二)使用步骤: 1.创建File对象 2.创建流对象 3.操作 读 ,写 4关闭流
IO流的分类可以分为以下三种: 第一种:输入流和输出流 按照流的流向来分,可以分为输入流和输出流。输入,输出都是从程序运行所在内存的角度来划分的。 由OutputStream和Writer作为基类 第二种:字节流和字符流 字节流和字符流的用法几乎完全一样,区别在于字节流和字符流所操作的数据单元不同。 字节流操作的数据单元是8位字节,由InputStream和OutputStream作为基类。 字符流操作的数据单元是16为的字符,由Reader和Writer作为基类 第三种:节点流和处理流 按照流的角色来分,可以分为节点流和处理流。 节点流:可以从向一个特定的IO设备(如磁盘、网络)读/写数据的流。也被称为低级流。 处理流:用于对一个已存在的流进行连接或封装,通过封装后的流来实现数据读/写功能。
http://blog.csdn.net/a107494639/article/details/7586365 1.IO流是干什么的? IO流指 的是输入输出流,用来处理设备上的数据。这里的设备指硬盘,内存,键盘录入,网络传输等。 2.IO流的分类? 按处理数据类型来分:字节流和字符流 按流的方向来分:输入流和输入流。 PS:初学流的时候,新手很容易搞不清什么时候用输入流,什么时候用输出流。 简单来说,当需要读数据的时候,需要使用输入流,当需要写数据的时候,需要使用输出流。我以前是这么记忆的:“读入写出”,要读的话就用输入流,要写的话,就用输出流。经常想起这4个字,慢慢就记熟下来了。 因此,只要是纯文本数据处理,优先考虑使用字符流。其他情况就使用字节流。 4.IO流类的关系(列举了其中一部分) ?
在初学Java时,IO流是我遇到的一个很头疼的东西,Java IO 体系看起来类很多,感觉很复杂,但其实是 IO 涉及的因素太多了。 在设计 IO 相关的类时,编写者也不是从同一个方面考虑的,所以会给人一种很乱的感觉,并且还有设计模式的使用,更加难以使用这些 IO 类,所以特地对 Java 的 IO 做一个总结。 IO流总览 话不多说,直接上图: ? ? IO流分类: 按照“流”的数据流向,可以将其化分为:输入流和输出流。 按照“流”中处理数据的单位,可以将其区分为:字节流和字符流。 在java中,字节是占1个Byte,即8位;而字符是占2个Byte,即16位。而且,需要注意的是,java的字节是有符号类型,而字符是无符号类型! 3、File的具体使用: 例1: import java.io.*; /* File类常见方法: 1,创建。
IO流大家肯定不陌生,简单整理了一下常用IO流基本用法,其他的IO流还有很多以后有时间在整理。 1.基本概念 IO:Java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输,上传文件和下载文件,Java用于操作流的对象都在IO包中。 2.IO流的分类 图示:(主要IO流) 3.字节流 (1).字节流基类 1).InputStream InputStream:字节输入流基类,抽象类是表示字节输入流的所有类的超类。 ,提高了操作效率,IO流使用完毕一定要关闭。 Android } reader.close(); 注:Eclipse默认使用GBK编码,test.txt文件所以是GBK编码,当指定utf-8编码时所以会乱码。
IO流 第一部分 (OutputStreamWriter BufferOutputStream) 转换流 超类为Reader和Writer 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字节 OuputStream(多态) OutputStreamWriter(OutputStream out, String charsetName) String charsetName 传递编码表名字 GBK UTF-8 并指定编码表是UTF-8 OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8"); 子类可以直接操作文件,但是不能指定编码格式,默认使用系统默认的格式 FileReader fr = new FileReader("a.txt"); 缓冲流 提高输入输出的效率 分为字节缓冲流与字符缓冲流 创建字节输出流缓冲流的对象,构造方法中,传递字节输出流 BufferedOutputStream bos = new
IO流 第一部分 (outputStream/InputStream Writer/Redaer) IO流对象中输入和输出是相辅相成的,输出什么,就可以输入什么. IO的命名方式为前半部分能干什么,后半部分是父类的名字. (FileOutputStream 文件输出流) java->JVM->OS 流对象使用的基本步骤 创建流的子类对象,绑定数据目的地(文件路径) 使用write方法写或read方法读 close()方法关闭流对象 off,int len) 将b数组中从off开始的len个字节写入输出流 close() 关闭流对象,并且释放流对象的资源 , (流对象操作的是操作系统中的资源,释放这里资源) FileOutputStram 文件输出流,是用于将数据写入 File的输出流。
InputStream和OutputStream两个抽象类构成了读写IO体系的框架基础。 字节流虽然可以操作任何的数据形式,但是对于占用多个字节的字符却不是很方便,需要知道,所以在JAVA中有专门提供了对于字符流的两个抽象类Reader和Writer 分类: IO流按照操作对象:字节流和字符流 按照流的方向分:输入流和输出流 ? 主要的流的体系图:每个输入流都有相应的输出流 在抽象类 Input/OutputStream ReaderWriter 后面跟着具体的实现子类 ? 字符流 字符流主要对于处理文本内容的读写十分的方便,按照字符的输入和输出和字节流操作上没有区别,但是在读取和写入时的操作单位不再是byte。 ?
此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO。 流IO的好处是简单易用,缺点是效率较低。块IO效率很高,但编程比较复杂。 Java.IO流类库 1. io流的四个基本类 java.io包中包含了流式I/O所需要的所有类。 在java.io包中, java.io.InputStream 表示字节输入流, java.io.OutputStream表示字节输出流,处于java.io包最顶层。 8. 字符流Writer/Reader Java中字符是采用Unicode标准,一个字符是16位,即一个字符使用两个字节来表示。为此,JAVA中引入了处理字符的流。 1. 与Writer差别 InputStream和OutputStream类处理的是字节流,数据流中的最小单位是字节(8个bit) Reader与Writer处理的是字符流,在处理字符流时涉及了字符编码的转换问题
我们平时在用流的时候是不是有的时候很纠结,不知道要用哪一个,流对象那么多。 整理一下,来看看流操作的基本规律。 输入流 >>>>> InputStream Reader 目的:输入流 >>>>> OutputStream Writer 2,操作的数据是否是纯文本: 是:字符流 注: UTF-8:一个字符3个字节 GBK:一个字符2个字节
随机访问文件,可以看作一个大型的byte[]数组,不算是IO体系中的一员,内部封装了字节输入输出流,可以设置权限,可以调整指针的位置 获取RandomAccessFile对象,构造参数:String文件名称 调整指针位置,参数:int的索引位置 调用RandomAccessFile对象的skipBytes()方法,可以跳过指定索引,参数:int索引位置 多线程下载的原理就是使用这个类 import java.io.RandomAccessFile
Java IO操作主要是指使用 java.io包下的内容,进行输入、输出操作。输入也叫读取数据,输出也叫写出数据。 ? IO 的分类:根据数据的流向分为:输入流和输出流。 ,int 类型的 32 位,只有低 8 位才写入,高 24 位将舍弃。 Writer】:java.io.Writer 抽象类是所有输出字符流的最顶层父类。 【2】字符缓冲流:BufferedReader,BufferedWriter 缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲数组,通过缓冲区读写,减少系统 IO次数,从而提高效率 在 IDEA中,使用 FileReader读取项目中的文本文件,由于 IDEA 默认使用 UTF-8编码,所有没有任何问题。
IO流 数据传输是需要通道的,而IO流就是数据传输的通道。 IO流可以形象的比喻为运送货物的传输带。 IO流的分类 根据操作的数据类型的不同可以分为 :字节流与字符流。 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 字节流和字符流的区别: 读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。 处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。 字节流:一次读入或读出是8位二进制。 字符流:一次读入或读出是16位二进制。 二进制的最终都是以一个8位为数据单元进行体现,所以计算机中的最小数据单元就是字节。意味着,字节流可以处理设备上的所有数据,所以字节流一样可以处理字符数据。
FileInputStream fileInputStream = new FileInputStream(file.getPath()); byte[] bytes = new byte[1024 * 8] FileReader fileReader = new FileReader(file.getPath()); char[] bytes = new char[1024 * 8] inputStream = httpURLConnection.getInputStream(); byte[] bytes = new byte[1024 * 8]