Java中IO流,输入输出流概述与总结
发布时间:2020-12-31 21:20:41 所属栏目:运营 来源:网络整理
导读:总结的很粗拙,往后时刻富饶了好好修改一下。 1:Java说话界说了很多类专门认真各类方法的输入可能输出,这些类都被放在java.io包中。个中, 全部输入流类都是抽象类InputStream(字节输入流),可能抽象类Reader(字符输入流)的子类; 而全部输出流都是抽象类O
FileInputStream和FileOutputStream举办拷贝文本可能图片可能歌曲: 1 package com.ningmeng; 2 3 import java.io.FileInputStream; 4 import java.io.FileOutputStream; 5 6 public class FileTest { 7 8 public static void main(String[] args) throws Exception{ 9 FileInputStream fis=new FileInputStream("aaa.txt"); 10 FileOutputStream fos=new FileOutputStream("bbb.txt"); 11 //假如没有bbb.txt,会建设出一个 12 13 int b; 14 while((b=fis.read())!=-1){ 15 fos.write(b); 16 } 17 fis.close(); 18 fos.close(); 19 } 20 }FileInputStream和FileOutputStream界说小数组举办读写操纵: 1 package com.ningmeng; 2 3 import java.io.FileInputStream; 4 import java.io.FileOutputStream; 5 6 public class FileTest { 7 8 public static void main(String[] args) throws Exception{ 9 FileInputStream fis = new FileInputStream("aaa.txt"); 10 FileOutputStream fos = new FileOutputStream("bbb.txt"); 11 int len; 12 byte[] arr = new byte[1024 * 8];//自界说字节数组 13 14 while((len = fis.read(arr)) != -1) { 15 //fos.write(arr); 16 fos.write(arr,len);//写出字节数组写出有用个字节个数 17 } 18 //IO流(界说小数组) 19 //write(byte[] b) 20 //write(byte[] b,int off,int len)写出有用的字节个数 21 22 fis.close(); 23 fos.close(); 24 } 25 }?IO流(BufferedInputStream和BufferOutputStream拷贝) * A:缓冲头脑 * 字节约一次读写一个数组的速率明明比一次读写一个字节的速率快许多, * 这是插手了数组这样的缓冲区结果,java自己在计划的时辰, * 也思量到了这样的计划头脑,以是提供了字节缓冲区流 * B.BufferedInputStream * BufferedInputStream内置了一个缓冲区(数组) * 从BufferedInputStream中读取一个字节时 * BufferedInputStream会一次性从文件中读取8192个,存在缓冲区中,返回给措施一个 * 措施再次读取时,就不消找文件了,直接从缓冲区中获取 * 直到缓冲区中全部的都被行使过,才从头从文件中读取8192个 * C.BufferedOutputStream * BufferedOutputStream也内置了一个缓冲区(数组) * 措施向流中写出字节时,不会直接写到文件,先写到缓冲区中 * 直到缓冲区写满,BufferedOutputStream才会把缓冲区中的数据一次性写到文件里<div class="cnblogs_code"> 1 package com.ningmeng; 2 3 import java.io.BufferedInputStream; 4 import java.io.BufferedOutputStream; 5 import java.io.FileInputStream; 6 import java.io.FileOutputStream; 7 8 public class FileTest { 9 10 public static void main(String[] args) throws Exception{ 11 FileInputStream fis = new FileInputStream("aaa.txt"); 12 FileOutputStream fos = new FileOutputStream("bbb.txt"); 13 14 BufferedInputStream bis=new BufferedInputStream(fis); 15 //行使装饰模式,把fis装饰进去bis中。行使缓冲读取速率变快 16 BufferedOutputStream bos=new BufferedOutputStream(fos); 17 18 int b; 19 while((b=bis.read())!=-1){ 20 bos.write(b); 21 } 22 bis.close(); 23 bos.close(); 24 } 25 } ?口试题:小数组的读写和带Buffered的读取哪个更快? * 界说小数组假如是8192个字节巨细和Buffered较量的话 * 界说小数组会略胜一筹,由于读和写操纵的是统一个数组 * 而Buffered操纵的是两个数组 IO流(flush和close要领的区别) flush()要领: 用来革新缓冲区的,革新后可以再次写出(字节缓冲流内置缓冲区,假如没有读取出来,可以行使flush()革新来) close()要领:用来封锁流开释资源的的,假如是带缓冲区的流工具的close()要领,不单会封锁流,还会再封锁流之前革新缓冲区,封锁后不能再写出 8:字符流FileReader和FileWriter 字符流是什么 * 字符流是可以直接读写字符的IO流 * 字符流读取字符,就要先读取到字节数据,然后转为字符. 假如要写出字符,必要把字符转为字节再写出. IO流(什么环境下行使字符流) * 字符流也可以拷贝文本文件,但不保举行使. 由于读取时会把字节转为字符,写出时还要把字符转回字节. * 措施必要读取一段文本,可能必要写出一段文本的时辰可以行使字符流 * 读取的时辰是凭证字符的巨细读取的,不会呈现半此中文 * 写出的时辰可以直接将字符串写出,不消转换为字节数组 ? IO流(字符流是否可以拷贝非纯文本的文件) * 不行以拷贝非纯文本的文件 * 由于在读的时辰会将字节转换为字符,在转换进程中,也许找不到对应的字符,就会用?取代,写出的时辰会将字符转换成字节写出去 * 假如是?,直接写出,这样写出之后的文件就乱了,看不了了1 package com.ningmeng; 2 3 import java.io.FileReader; 4 import java.io.FileWriter; 5 6 public class FileTest { 7 8 public static void main(String[] args) throws Exception{ 9 //FileReader类的read()要领可以凭证字符巨细读取 10 FileReader fr=new FileReader("aaa.txt"); 11 int b; 12 while((b=fr.read())!=-1){ 13 System.out.println((char)b);//int范例转为字符型 14 } 15 fr.close(); 16 17 //FileWriter类的write()要领可以自动把字符转为字节写出 18 FileWriter fw = new FileWriter("aaa.txt",true); 19 fw.write("aaa"); 20 fw.close(); 21 22 //字符流的拷贝 23 FileReader fr2 = new FileReader("aaa.txt"); 24 FileWriter fw2 = new FileWriter("bbb.txt"); 25 26 int ch; 27 while((ch = fr2.read()) != -1) { 28 fw2.write(ch); 29 } 30 31 fr2.close(); 32 fw2.close(); 33 } 34 }1 package com.ningmeng; 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.FileReader; 6 import java.io.FileWriter; 7 8 public class FileTest { 9 10 public static void main(String[] args) throws Exception{ 11 BufferedReader br=new BufferedReader(new FileReader("aaa.txt")); 12 BufferedWriter bw=new BufferedWriter(new FileWriter("bbb.txt")); 13 //BufferedReader和BufferedWriter的行使: 14 int b; 15 while((b=br.read())!=-1){ 16 bw.write((char)b); 17 } 18 br.close(); 19 bw.close(); 20 } 21 } ?先写到这里吧,内容较量多,往后偶然刻再总结,也利便本身脑补 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |