io流

Java基础学习之IO流模拟输入复制粘贴功能

两盒软妹~` 提交于 2019-11-29 16:17:12
学习了IO流后,了解其 IO体系 : 字符流: Reader:输入流 读取 进入内存 Writer:输出流 写入 进硬盘 字节流: InputStream:输入流 读取 进内存 OutputStream:输出流 写入 进硬盘 下面通过字符流的输入流(FileReader)以及输出流(FileWriter) 模拟系统中的复制粘贴功能 :如将D盘下的1.txt复制粘贴到C盘中。 思路: 确定源文件 d:/1.txt 确定目的文件 c:/1.txt 边读边写 释放资源 注意: 输入流中的read(数组)函数的返回值为int类型,返回的是覆盖数组中的元素长度,读取结束标志是返回值为-1; 每次写入结束后要 使用flush()函数进行刷新缓存。 代码: 首先用基本的输入输出流实现: import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class Test1 { public static void main(String[] args){ //1.确定源文件 d:/1.txt FileReader fr=null; FileWriter fw=null; try { fr=new FileReader("d:/1.txt"); //2.确定目标文件 c:/1.txt

Java基础IO流

瘦欲@ 提交于 2019-11-29 16:16:52
Java基础之IO流 IO流常用几个类的关系如下: 字节流 字节输入流FileInputStream 读取文件用法实例 通过字输入流从D盘中dd.txt文件中读取文件内容,采用字节输入流,每次读取一个字节的方式 public class MyInputStreamDemo { public static void main(String[] args) throws Exception { //创建字节输入流 FileInputStream fis = new FileInputStream("d:/dd.txt"); int by; while ((by = fis.read()) != -1) { System.out.print((char) by); } fis.close(); } } 通过字节数组读取的方式如下 public class MyInputStreamDemo { public static void main(String[] args) throws Exception { //创建字节输入流 FileInputStream fis = new FileInputStream("d:/dd.txt"); //通过字节数组,每次读取一个字节数组的方式读取文件 byte[] arr =new byte[1024]; int len; while ((len

IO流

萝らか妹 提交于 2019-11-29 12:09:13
流的概念 数据的传输称为流,流的本质是数据传输。 流是一组有序的,有起点和终点的字节集合,是对计算机中数据传输的总称或者抽象。 流序列中的数据可以是没有进行加工的原始数据(二进制字节数据),也可以是经过编码的符合某种格式规定的数据,Java中提供了不同的流类对它们进行处理。 流有两个端点,起始位置 —> 目的地。 一端发送,另外一端接收。 输入流/输出流:都是从jvm角度来讲的。 把任何外界数据读到java中,这就是输入流。 把任何java中的数据写到外界,都是输出流。 输出流代表:System.out.print; 起点:jvm 终点:控制台 输入流代表:new Scanner(System.in); 起点:键盘->电脑操作系统 终点:jvm ------------------------------------------------------------------------------------------------------------------------------ 流的分类 按照流传输方向不同: 输入流(InputStream) 输出流(OutputStream) 按照处理数据类型的不同: 字节流 字符流 按照流的基本功能不同: 节点流(基本流,传输最基本的字节或字符) 过滤流(对节点流的扩展,传对象,传double,传String等等) ------

IO流File2

早过忘川 提交于 2019-11-29 09:33:45
字符与字节: (一)“字节”的定义 字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位。 (二)“字符”的定义 字符是指计算机中使用的文字和符号,比如1、2、3、A、B、C、~!·#¥%……—*()——+、等等。 (三)“字节”与“字符” 它们完全不是一个位面的概念,所以两者之间没有“区别”这个说法。不同编码里,字符和字节的对应关系不同: ①ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值0,最大值255。 ②UTF-8编码中,一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。 ③Unicode编码中,一个英文等于两个字节,一个中文(含繁体)等于两个字节。 符号:英文标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。 ④UTF-16编码中,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)。 ⑤UTF-32编码中,世界上任何字符的存储都需要4个字节。 字节流与字符流: 字节流与字符流主要的区别是他们的的处理方式 字节流是最基本的,采用ASCII编码

io流--序列化流与反序列化流

橙三吉。 提交于 2019-11-29 06:19:05
实现序列化必须实现Serializable接口 用于从流中读取对象的 操作流 ObjectInputStream 称为 反序列化流 用于向流中写入对象的操作流 ObjectOutputStream 称为 序列化流 特点:用于操作对象。可以将对象写入到文件中,也可以从文件中读取对象。 ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。可以使用 ObjectInputStream 读取(重构)对象。通过在流中使用文件可以实现对象的持久存储。 默认产生序列号,前提实现 Serializable 接口 不定死序列号,改变内容,反序列化就会出现报错 /定死序列号,改变内容,反序列化不会报错 建立person类 当一个对象要能被序列化,这个对象所属的类必须实现Serializable接口。否则会发生异常NotSerializableException异常。 同时当反序列化对象时,如果对象所属的class文件在序列化之后进行的修改,那么进行反序列化也会发生异常InvalidClassException。发生这个异常的原因如下: l 该类的序列版本号与从流中读取的类描述符的版本号不匹配 l 该类包含未知数据类型 l 该类没有可访问的无参数构造方法 Serializable标记接口。该接口给需要序列化的类,提供了一个序列版本号

io流--转换流,缓冲流

主宰稳场 提交于 2019-11-29 06:17:58
功能: 转换吗?转换流。InputStreamReader OutputStreamWriter 高效吗?缓冲区对象。BufferedXXX unicode:国际标准码表:无论是什么文字,都用两个字节存储。 l Java中的char类型用的就是这个码表。char c = 'a';占两个字节。 l Java中的字符串是按照系统默认码表来解析的。简体中文版 字符串默认的码表是GBK。 UTF-8:基于unicode,一个字节就可以存储数据,不要用两个字节存储,而且这个码表更加的标准化,在每一个字节头加入了编码信息(后期到api中查找)。 能识别中文的码表:GBK、UTF-8;正因为识别中文码表不唯一,涉及到了编码解码问题。 对于我们开发而言;常见的编码 GBK UTF-8 ISO-8859-1 文字--->(数字) :编码。“abc”.getBytes() byte[] (数字)--->文字 : 解码。 byte[] b={97,98,99} new String(b,0,len) 转化流 OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字节,将字符串按照指定的编码表转成字节,在使用字节流将这些字节写出去 其实在OutputStreamWriter流中维护自己的缓冲区

io流--递归

时间秒杀一切 提交于 2019-11-29 05:55:24
递归: 自己调用自己: 递归,指在当前方法内调用自己的这种现象 递归分为两种,直接递归和间接递归。 直接递归称为方法自身调用自己。间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。 public static void main(String[] args) { a(); } //递归 /* 注意事项 *1.必须有出口,否则无意义 * 2.构造方法不能递归 * 3.递归的次数不能过多(内存有限) * */ public static void a(){ a(); } } 注意:递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。 在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。 public static void main(String[] args) { // 用递归计算1-100的和 int sum=get(100); System.out.println(sum); int con=getn(5); System.out.println(con); } public static int get(int n){ if(n==1){ return 1; } return n+get(n-1); } public static int getn(int a){ if(a==1){ return 1; } return a

io流--File类

 ̄綄美尐妖づ 提交于 2019-11-29 05:53:40
IO 流 流的概念 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 必有源端和目的端,流可分为两类:输入流和输出流。用户可以从输入流中读取信息,但不能写它。相反,对输出流,只能往输入流写,而不能读它。 IO 流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 File类的出现 File类的构造方法, public File(String pathname) 实例化File类的时候,必须设置好路径 No. 方法或常量 类型 描述 1 public static final String pathSeparator 常量 表示路径的分隔符(windows是“;”) 2 public static final String separator 常量 表示路径的分隔符(windows是“\”) 3 public File(String pathname) 构造 创建File类对象,传入完整路径 4 public boolean createNewFile()throws IOException 普通 创建新文件 5 public boolean delete() 普通 删除文件 6 public boolean

java IO流

心已入冬 提交于 2019-11-29 05:22:32
当不同的介质之间有数据交互的时候,JAVA就使用流来实现。 数据源可以是文件,还可以是数据库,网络甚至是其他的程序。 比如,站在程序的角度来看,就叫做输入流。反之就是输出流 输入流 # ## IO流的分类   根据按照流向可分为: 输入流 (读取文件的数据到程序中,读取数据)和 输出流 (读取程序的数据写出到文件中,写出数据) 根据按照数据类型可分为: 字节流( 传输数据的最基本单位是字节的流 )和 字符流 ( 传输过程中,传输数据的最基本单位是字符的流 ) 字节流 可分为:字节输入流(读取数据 InputStream)和字节输出流(写出数据 OutputStream) 以Stream结尾大多数是字节流 字符流 可分为:字符输入流(读取数据 Reader)和字符输出流(写出数据 Writer) # ## InputStream InputStream 是所有的输入字节流的父类 它是一个抽象类 其子类包括 ByteArrayInputStream StringBufferInputStream FileInputStream 分别从Byte 数组 StringBuffer 和本地文件中读取数据 PipedInputStream是从与其它线程共用的管道中读取数据 来源: https://www.cnblogs.com/renxixao/p/11456699.html

IO流——字节流

与世无争的帅哥 提交于 2019-11-29 05:05:06
一、字节输出流 OutputStream OutputStream为抽象类,是表示输出字节流的所有类的超类。操作的数据都是字节,定义了输出字节流的基本共性方法。 方法: 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):将指定的字节写入此输入流。 来源: https://www.cnblogs.com/peng19920430/p/11456305.html