3-2 文件流类FileStream u本节学习目标: nFileStream文件流类 nFileStream文件流类的创建 nFileMode和FileAccess,FileShare方法基本介绍及注意事项 如果允许其他流同时访问文件,则这些流是只读、只写,还是读写文件? 它们三个都是System.IO命名空间中的枚举类型。 System.IO.FileMode.Create 等效于这样的请求:如果文件不存在,则使用 <CreateNew>;否则使用 <Truncate>。 CreateNew 指定操作系统应创建新文件。 如果该文件不存在,则引发 System.IO.FileNotFoundException。 OpenOrCreate 指定操作系统应打开文件(如果文件存在);否则,应创建新文件。
、IO流原理 2.2、流的分类 2.3、IO 流体系 04、节点流(或文件流) 4.1、FileReader读入数据的基本操作 4.2、FileReader中使用read(char[] cbuf)读入数据 流原理及流的分类 2.1、IO流原理 I/O是Input/Output的缩写,I/O技术是非常实用的技术,用于处理设备之间的数据传输。 2.3、IO 流体系 04、节点流(或文件流) 4.1、FileReader读入数据的基本操作 1、读取文件【四个步骤】 建立一个流对象,将已存在的一个文件加载进流。 ; import java.io.IOException; import java.io.InputStreamReader; /** * 其他流的使用 * 1.标准的输入、输出流 * 2.打印流 * NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的(IO是面向流的)、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。
什么是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流的简单介绍
目录 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的分类 根据数据的流向分: 输入流 把数据从 其他设备 上读取到 内存 中的流。 OutputStream: 字节输出流 作用:java.io.OutputStream 抽象类是表示字节输出流的所有类的超类,将指定的字节信息写出到目的地 基本方法 public void close( Reader类 作用 java.io.Reader 抽象类是表示用于读取字符流的所有类的超类,可以读取字符信息到内存中。 字符缓冲流: BufferedReader , BufferedWriter 基本原理 缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组, 通过缓冲区读写,减少系统IO 次数
流 不同设备之间的数据传输就是流,可以抽象理解供水厂到家庭之间的水管,水(数据)在管道传输,就成了流 根据流向分为输出流和输入流 数据从文件流向程序称为输入流 数据从程序流向文件称为输出流 根据数据类型分为字节流和字符流 字节流处理字节数据 字符流处理字符数据 按处理数据分为节点流和处理流 节点流 文件流 数组流 管道流 处理流 缓冲流 转换流 基本数据流 对象序列化流 打印控制流 IO流属于阻塞操作,一般项目中应放到子线程中 ,避免阻塞主线程 其中几个常见流之间的继承关系如下 ? 各种流介绍 2.1 File 在了解各种流之前,先来看看File类 其静态字段有: Modifier and Type Field Description static String pathSeparator ,二进制不需要编码解码,比文本效率高,可移植,缺点是人们看不懂二进制内容,当读入数据到内存时,用一个字节或字节数组来存储,写出时同理,并且无论使用什么流,底层传输的都是二进制,所以字节流是一切流的基础
之前我们使用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
编码问题 File类 RandomAccessFile 按照数据流的不同分为·:输入流和输出流 按照处理数据单位不同可以分为:字节流和字符流 1.Java中的输入输出都是以流的形式(文件读写,网络传递) Java是双字节编码utf-16be 3.File类 java.io.File类用于表示文件(目录), File类只用于表示文件的信息(名称,大小等)不能用于文件内容的访问 第一个标识中需要介绍 6.按照处理数据单位不同可以分为:字节流和字符流 字节流和字符流的原理是相同的,只是处理的单位不同 第五点中为字节流,(处理图片是最好用字节流,防止漏读); 小技巧:后缀为Stream是字节·流, 而后缀为Reader,Writer是字符流 下面是一个字符流中读的Demo(记得要关掉流)《输入流》 下面是一个字符流中写的Demo(记得要关掉流)《输出流》 这里记得要刷新流flush :字符流 写入数据 其他多种多样的流都是继承了它们,并进行了装饰而派生出来的加强版 (二)使用步骤: 1.创建File对象 2.创建流对象 3.操作 读 ,写 4关闭流
IO流的分类可以分为以下三种: 第一种:输入流和输出流 按照流的流向来分,可以分为输入流和输出流。输入,输出都是从程序运行所在内存的角度来划分的。 输出流:只能向其写入数据,而不能从中读取数据。 由OutputStream和Writer作为基类 第二种:字节流和字符流 字节流和字符流的用法几乎完全一样,区别在于字节流和字符流所操作的数据单元不同。 字符流操作的数据单元是16为的字符,由Reader和Writer作为基类 第三种:节点流和处理流 按照流的角色来分,可以分为节点流和处理流。 节点流:可以从向一个特定的IO设备(如磁盘、网络)读/写数据的流。也被称为低级流。 处理流:用于对一个已存在的流进行连接或封装,通过封装后的流来实现数据读/写功能。
http://blog.csdn.net/a107494639/article/details/7586365 1.IO流是干什么的? IO流指 的是输入输出流,用来处理设备上的数据。这里的设备指硬盘,内存,键盘录入,网络传输等。 2.IO流的分类? 按处理数据类型来分:字节流和字符流 按流的方向来分:输入流和输入流。 PS:初学流的时候,新手很容易搞不清什么时候用输入流,什么时候用输出流。 简单来说,当需要读数据的时候,需要使用输入流,当需要写数据的时候,需要使用输出流。我以前是这么记忆的:“读入写出”,要读的话就用输入流,要写的话,就用输出流。经常想起这4个字,慢慢就记熟下来了。 因此,只要是纯文本数据处理,优先考虑使用字符流。其他情况就使用字节流。 4.IO流类的关系(列举了其中一部分) ?
IO流大家肯定不陌生,简单整理了一下常用IO流基本用法,其他的IO流还有很多以后有时间在整理。 1.基本概念 IO:Java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输,上传文件和下载文件,Java用于操作流的对象都在IO包中。 2.IO流的分类 图示:(主要IO流) 3.字节流 (1).字节流基类 1).InputStream InputStream:字节输入流基类,抽象类是表示字节输入流的所有类的超类。 System.out.print((char) i + " ");// A B C D } //关闭IO流 inputStream.close(); // 读取f盘下该文件f:// ,提高了操作效率,IO流使用完毕一定要关闭。
IO流 第一部分 (OutputStreamWriter BufferOutputStream) 转换流 超类为Reader和Writer 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字节 子类可以直接操作文件,但是不能指定编码格式,默认使用系统默认的格式 FileReader fr = new FileReader("a.txt"); 缓冲流 提高输入输出的效率 分为字节缓冲流与字符缓冲流 BufferedOutputStream(字节输出流缓冲流) 构造方法 BufferedOutputStream(OutputStream out) 使用 // 创建字节输出流缓冲流的对象,构造方法中,传递字节输出流 BufferedOutputStream bos = new new String(bytes,0,len)); } bis.close(); BufferedWriter(字符输出流缓冲流
IO流 第一部分 (outputStream/InputStream Writer/Redaer) IO流对象中输入和输出是相辅相成的,输出什么,就可以输入什么. IO的命名方式为前半部分能干什么,后半部分是父类的名字. (FileOutputStream 文件输出流) java->JVM->OS 流对象使用的基本步骤 创建流的子类对象,绑定数据目的地(文件路径) 使用write方法写或read方法读 close()方法关闭流对象 off,int len) 将b数组中从off开始的len个字节写入输出流 close() 关闭流对象,并且释放流对象的资源 , (流对象操作的是操作系统中的资源,释放这里资源) FileOutputStram 文件输出流,是用于将数据写入 File的输出流。
IO流总结 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。 此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO。 流IO的好处是简单易用,缺点是效率较低。块IO效率很高,但编程比较复杂。 Java中IO流的体系结构如图: ? ? 输入流 ? 输出流 5. 非流式文件类--File类 在Java语言的java.io包中,由File类提供了描述文件和目录的操作与管理方法。 Java.IO流类库 1. io流的四个基本类 java.io包中包含了流式I/O所需要的所有类。 在java.io包中, java.io.InputStream 表示字节输入流, java.io.OutputStream表示字节输出流,处于java.io包最顶层。
我们平时在用流的时候是不是有的时候很纠结,不知道要用哪一个,流对象那么多。 整理一下,来看看流操作的基本规律。 输入流 >>>>> InputStream Reader 目的:输入流 >>>>> OutputStream Writer 2,操作的数据是否是纯文本: 是:字符流
InputStream和OutputStream两个抽象类构成了读写IO体系的框架基础。 字节流虽然可以操作任何的数据形式,但是对于占用多个字节的字符却不是很方便,需要知道,所以在JAVA中有专门提供了对于字符流的两个抽象类Reader和Writer 分类: IO流按照操作对象:字节流和字符流 按照流的方向分:输入流和输出流 ? 主要的流的体系图:每个输入流都有相应的输出流 在抽象类 Input/OutputStream ReaderWriter 后面跟着具体的实现子类 ? 字符流 字符流主要对于处理文本内容的读写十分的方便,按照字符的输入和输出和字节流操作上没有区别,但是在读取和写入时的操作单位不再是byte。 ?
最近有个账单加解密的需求,正好用到 IO 流,借此机会复习一下这方面的知识,巩固记忆。 /tobetopjavaer/#/basics/java-basic/byte-stream-vs-character-stream 一、IO 的分类 IO:Java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输 ,上传文件和下载文件,Java用于操作流的对象都在IO包中。 IO的分类如下: image.png 还可以根据操作对象来进行分类 image.png 主要的IO流: image.png image.png 二、字节流 操作byte类型数据,主要操作类是OutputStream 但要先刷新它 abstract void close() // 刷新该流的缓冲 abstract void flush() 四、字节流与字符流相互转换 整个IO包实际上分为字节流和字符流
java IO流 文件 文件就是保存数据的地方。 文件流,文件在程序中时以流的形式来操作的 Java IO流插图 创建文件 相关方法: 根据路径构建一个Fiile对象:new File (String pathname); 根据父目录文件+子路径构建 流原理和分类 java程序中,对于数据的输入/输出操作是以“流”的方式进行 在java.io包下提供各种接口 按操作数据单位不同分为:字节流(8bit)二进制文件,字符流(按字符)文本文件 按数据流的流向不同分为 BufferedReader类中,有属性Reader,即可以封装一个结点流,该节点是任意的,只要是Reader子类 Java IO流插图1 处理流的设计模式 处理流对节点流进行包装,使用了修饰器设计模式 流插图3 package IOStream.opp7; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter
image.png FileOutputStream try { FileOutputStream fileOutputStream = new FileOutputStream(file.getPath()); byte[] bytes = aa.getBytes(); try { fileOutputStream.write(bytes); fileOutputS
十二、IO流 在C++中,IO流(Input/Output Streams)是一个强大的特性,它允许程序以灵活和高效的方式处理数据的输入输出。 虽然C语言没有内置的IO流机制,但C++通过继承C语言的I/O库(如stdio.h中的函数)并扩展其功能,引入了IO流库。C++的IO流库提供了面向对象的接口,使得处理输入输出变得更加灵活和强大。 C++ IO流与C语言I/O的区别 类型安全:C++的IO流是类型安全的,它们可以自动处理数据类型之间的转换,并能够在编译时检查潜在的错误。 灵活性:C++的IO流库非常灵活,它支持链式操作、插入器和提取器(inserters and extractors),以及自定义类型的流插入和提取。 总的来说,C++的IO流提供了一种比C语言I/O函数更强大、更灵活且更易于使用的数据输入输出方式。