一.惰性I/O与buffer Haskell中,I/O也是惰性的,例如: readThisFile = withFile "....-> IO () 实际上,ByteString与String类型在大多数场景可以很容易地互相转换,所以可以先用String实现,在性能不好的场景再改成ByteString P.S.更多ByteString...True,True,False,False,True,True,False,False,True] 注意,在GHCIi环境调用getStdGen得到的总是同一个种子,类似于程序连续调用getStdGen的效果...参考资料 How to catch a divide by zero error in Haskell?...Exception handling in Haskell
IO流概述 大多数应用程序都需要实现与设备之间的数据传输,例如键盘可以输入数据,显示器可以显示程序的运行结果等。...在Java中,将这种通过不同输入输出设备(键盘,内存,显示器,网络等)之间的数据传输抽象的表述为“流”,程序允许通过流的方式与输入输出设备进行数据传输。...Java中的“流”都位于Java.io包中,称之为IO(输入输出)流。 IO流:即InputOutput的缩写。 输入流和输出流相对于内存设备而言。将外设中的数据读取到内存中:输入。...IO流的特点: IO流用来处理设备间的数据传输。 Java对数据的操作是通过流的方式。 Java用于操作流的对象都在IO包中。 流按操作数据分为两种:字节流和字符流。...流的三种分类方式 按流的方向分为:输入流和输出流 按流的数据单位不同分为:字节流和字符流 按流的功能不同分为:节点流和处理流 字节流是由字节组成的; 字符流是由字符组成的 Java里字符由两个字节组成
什么是IO流 先看一段百度上的解释: 当然:如果你看不懂,那么你只需要记住下面3句话. 1....(3).那么这当中的水流,便可以理解为IO流。 2. 那么JAVA中的IO流呢; (1).在java中,java就是自来水厂,水源地就是源,家就是目的 (2)....类型的需要输出数据文件地址 ); (4).创建一个缓冲区(缓冲区的创建能够提高文件的读取效率) (5).数据的读取:创建一个byte类型的数组,至于数组的长度建议为1024的倍数; (6).数据的写入 (7).流的刷新与关闭...类型的需要输出数据文件地址 ); (4).创建一个缓冲区(缓冲区的创建能够提高文件的读取效率) (5).数据的读取:创建一个byte类型的数组,至于数组的长度建议为1024的倍数; (6).数据的写入 (7).流的刷新与关闭...创建转换流对象 输 出流对象, 输出的编码 OutputStreamWriter osw = new OutputStreamWriter(os,“ISO-8859-1”); 以上就是IO流的简单介绍
、IO流原理 2.2、流的分类 2.3、IO 流体系 04、节点流(或文件流) 4.1、FileReader读入数据的基本操作 4.2、FileReader中使用read(char[] cbuf)读入数据...5.1、缓冲流(字节型)实现非文本文件的复制 5.2、缓冲流与节点流读写速度对比 5.3、缓冲流(字符型)实现文本文件的复制 5.4、缓冲流课后练习 06、转换流 6.1、转换流概述与InputStreamReader...的使用 6.2、转换流实现文件的读入和写出 6.3、多种字符编码集的说明 07、标准输入、输出流 08、打印流 09、数据流 10、对象流 10.1、对象序列化机制的理解 10.2、对象流序列化与反序列化字符串操作...(默认情况下,从头覆盖) * * 4.可以通过相关的操作,实现RandomAccessFile“插入”数据的效果 */ public class RandomAccessFileTest { /**...NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的(IO是面向流的)、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。
编写一个程序,将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt文件中,a.txt 文件中的单词用回车符分隔,b.txt 文件中用回车或空格进行分隔。...首先我们要想到解题思路:1.先用字符流读取到a.txt和b.txt文件,同时创建一个输出流用于输出到c.txt;2.其次你需要先循环输出a到c,但每输出一个a文本要间隔的输出一个b到c,而你又怎么知道什么时候的...废话不多说,直接上代码: package com.wenxue; import java.io.File; import java.io.FileReader; import java.io.FileWriter...有人可能觉得为啥要讲数组转来转去,其实也是可以不转的,但编写上就有些别扭,如下: package com.wenxue; import java.io.File; import java.io.FileReader...; import java.io.FileWriter; public class Main { public static void main(String[] args) throws Exception
IO流介绍: io就是Input/Output的缩写形式,Input是输入流,Output是输出流。 流:传递数据的通道,流关心的是数据内容,因为流就是与数据打交道。 io分8位流和16位流。...8位流又叫字节流,16位流又叫字符流。在应用中用的最多的是8位流,因为所有的文件都是以字节组成,16位流只适合处理文字、字符上的事情,因为16位流会转化成字符。...io流的操作类都在java.util这个包下。
目录 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 文件流常用函 描述 open 打开文件 is_open 文件是否被打开 close 关闭文件 getline 读取一行 read 输入(读)到对象 write...将缓冲区的数据写出到文件,再清空它 tellg 输入(读)文件指针位置 tellp 输出(写)文件指针位置 seekg 设置输入(读)文件指针位置 seekp 设置输出(写)文件指针位置 eof 是否到了流尾部
写在前面 一直有个疑惑,Haskell号称纯函数式语言,那么铁定不纯的场景(肯定有副作用,或者操作本身就是副作用)如何解决?...Haskell提供了do语句块,也是用来隔离不纯的部分的 一.I/O action 先看个函数类型: > :t print print :: Show a => a -> IO () print函数接受一个...(IO a) -- Defined in ‘GHC.Base’ 从类型上看,IO与Maybe :: * -> *类似,都是接受一个具体类型参数,返回具体类型(比如IO ()) P.S.其中,newtype...b的函数,第二个参数是[a],返回IO [b],返回值类型与sequence一致。...模块,例如doesFileExist, getAccessTime, findFile等等 P.S.更多文件操作函数,见System.Directory 参考资料 Haskell default io
之前我们使用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流属于阻塞操作,一般项目中应放到子线程中...,避免阻塞主线程 其中几个常见流之间的继承关系如下 ?...各种流介绍 2.1 File 在了解各种流之前,先来看看File类 其静态字段有: Modifier and Type Field Description static String pathSeparator...,二进制不需要编码解码,比文本效率高,可移植,缺点是人们看不懂二进制内容,当读入数据到内存时,用一个字节或字节数组来存储,写出时同理,并且无论使用什么流,底层传输的都是二进制,所以字节流是一切流的基础
IO流 文件操作 File类 作用 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作 构造方法 public File(String pathname...流 什么是IO 把与计算机之间数据的传输,可以看做是一种数据的流动,按照流动的方向 以内存为基准,分为 输入input 和 输出 output ,即流向内存是输入流,流出内存的输出流 可以理解 把程序当中的数据保存到电脑磁盘...,为输出流,把电脑磁盘当中的数据加载到程序当中为输入流 示例图 IO的分类 根据数据的流向分: 输入流 把数据从 其他设备 上读取到 内存 中的流。...Reader类 作用 java.io.Reader 抽象类是表示用于读取字符流的所有类的超类,可以读取字符信息到内存中。...字符缓冲流: BufferedReader , BufferedWriter 基本原理 缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组, 通过缓冲区读写,减少系统IO 次数
编码问题 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关闭流
> tip: 按照其他语言中的习惯,Int,Int,Int -> Int好像看起来更为恰当一些,但实际haskell中->只有一个作用:它标识一个函数接收一个参数并返回一个值,其中->符号左边是参数的类型...haskell中所有函数都是只接收一个参数的,所有函数都是currying的。...可以这样解读head函数的类型:head函数接收一个a类型的List参数(即任意类型的参数)返回一个a类型的返回值(参数与返回值的类型必须是一样的,都是a类型) fst函数的类型: Prelude>...注意,a 和 b 是不同的型别变量,但它们不一定非得是不同的型别,它只是标明了首项的型别与回传值的型别相同。..."True" || False True 但是执行下面的代码,就会提示错误: Prelude> read "5" *** Exception: Prelude.read: no parse 这是因为haskell
http://blog.csdn.net/a107494639/article/details/7586365 1.IO流是干什么的? ...IO流指 的是输入输出流,用来处理设备上的数据。这里的设备指硬盘,内存,键盘录入,网络传输等。 2.IO流的分类? ...按处理数据类型来分:字节流和字符流 按流的方向来分:输入流和输入流。 PS:初学流的时候,新手很容易搞不清什么时候用输入流,什么时候用输出流。...简单来说,当需要读数据的时候,需要使用输入流,当需要写数据的时候,需要使用输出流。我以前是这么记忆的:“读入写出”,要读的话就用输入流,要写的话,就用输出流。经常想起这4个字,慢慢就记熟下来了。...因此,只要是纯文本数据处理,优先考虑使用字符流。其他情况就使用字节流。 4.IO流类的关系(列举了其中一部分) ?
IO流的分类可以分为以下三种: 第一种:输入流和输出流 按照流的流向来分,可以分为输入流和输出流。输入,输出都是从程序运行所在内存的角度来划分的。...输出流:只能向其写入数据,而不能从中读取数据。...由OutputStream和Writer作为基类 第二种:字节流和字符流 字节流和字符流的用法几乎完全一样,区别在于字节流和字符流所操作的数据单元不同。...字符流操作的数据单元是16为的字符,由Reader和Writer作为基类 第三种:节点流和处理流 按照流的角色来分,可以分为节点流和处理流。...节点流:可以从向一个特定的IO设备(如磁盘、网络)读/写数据的流。也被称为低级流。 处理流:用于对一个已存在的流进行连接或封装,通过封装后的流来实现数据读/写功能。
IO流大家肯定不陌生,简单整理了一下常用IO流基本用法,其他的IO流还有很多以后有时间在整理。...1.基本概念 IO:Java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输,上传文件和下载文件,Java用于操作流的对象都在IO包中。...2.IO流的分类 图示:(主要IO流) 3.字节流 (1).字节流基类 1).InputStream InputStream:字节输入流基类,抽象类是表示字节输入流的所有类的超类。...数组 int read(byte[] b, int off, int len) // 跳过和丢弃此输入流中数据的 n个字节 long skip(long n) // 关闭此输入流并释放与该流关联的所有系统资源...,提高了操作效率,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(字符输出流缓冲流
与lock_gard类似。 上锁/解锁操作:lock、try_lock、try_lock_for、try_lock_until和unlock。...修改操作:移动赋值、交换(swap:与另一个unique_lock对象互换所管理的互斥量所有权)、释放(release:返回它所管理的互斥量对象的指针,并释放所有权)。...IO流 流是什么 “流”即是流动的意思,是物质从一处向另一处流动的过程,是对一种有序连续且具有方向性的数 据( 其单位可以是bit,byte,packet )的抽象描述。...为了实现这种流动,C++定义了I/O标准类库,这些每个类都称为流/流类,用以完成某方面的功 能。...C++IO流 operator bool #include using namespace std; class A { public: A(int a) :_a(a
IO流 第一部分 (outputStream/InputStream Writer/Redaer) IO流对象中输入和输出是相辅相成的,输出什么,就可以输入什么....IO的命名方式为前半部分能干什么,后半部分是父类的名字....(FileOutputStream 文件输出流) java->JVM->OS 流对象使用的基本步骤 创建流的子类对象,绑定数据目的地(文件路径) 使用write方法写或read方法读 close()方法关闭流对象...off,int len) 将b数组中从off开始的len个字节写入输出流 close() 关闭流对象,并且释放流对象的资源 , (流对象操作的是操作系统中的资源,释放这里资源) FileOutputStram...文件输出流,是用于将数据写入 File的输出流。
我们平时在用流的时候是不是有的时候很纠结,不知道要用哪一个,流对象那么多。 整理一下,来看看流操作的基本规律。...输入流 >>>>> InputStream Reader 目的:输入流 >>>>> OutputStream Writer 2,操作的数据是否是纯文本: 是:字符流