范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Java基础IO流

  前言: 为什么要写这篇文章,由于长时间不使用I/O流操作,导致很多知识都朦朦胧胧似懂非懂,今天抽空把这部分内容认真复习了下,顺便写篇文章加深印象。I/O流在很多场景中都有使用,比如文件上传下载、socket通信等。本文主要介绍常用字节流,其它字符流、转换流用法类似就不一一介绍。
  一、初始IO流
  数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input和输出output,即流向内存的是输入流,流出内存的是输出流。
  2、IO流的分类
  按照流的方向可以分为:输入流和输出流 输入流 :把数据从其他设备上读取到内存中的流。 输出流 :把数据从内存 中写出到其他设备上的流。
  按照流的类型可以分为:字节流和字符流 字节流 :以字节为单位。 字符流 :以字符为单位。
  字节流和字符流的超类如下所示
  流类型
  输入流
  输出流
  字节流
  InputStream
  OutputStream
  字符流
  Reader
  Writer
  字节流和字符流不同之处
  读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。
  处理对象不同:字节流能处理所有类型的数据(如图片、视频、音频等),而字符流只能处理字符类型的数据。
  总结:只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流
  字节流和字符流实现类汇总
  网上找了一个
  二、字节输入输出流
  一切文件数据(文本、图片、视频等)在存储时,都是以二进制数字的形式保存,都一个一个的字节,那么传输时一样如此。所以,字节流可以传输任意文件数据。
  1、字节输入流(InputStream)
  InputStream抽象类字节输入流的所有类的超类,可以读取字节信息到内存中。它定义了字节输入流的基本共性功能方法。
  1、public abstract int read();
  2、 public void close();
  3、public long skip(long n);
  4、public synchronized void mark(int readlimit);
  5、public synchronized void reset();我们以FileInputStream读取文件为例
  FileInputStream读取字节数据
  test.txt文件内容为:123123123
  1、读取字节:read方法,每次可以读取一个字节的数据,提升为int类型,读取到文件末尾,返回-1,代码如下:
  public static void testFileInPut()throws Exception {         FileInputStream inputStream = new FileInputStream("D:aplustest.txt");         int b;         while ((b = inputStream.read()) != -1) {             System.out.println((char)b);         }         inputStream.close(); }
  2、使用字节数组读取:read(byte[] b),每次读取b的长度个字节到数组中,返回读取到的有效字节个数,读取到末尾时,返回-1 ,代码如下:
  public static void testFileInPut1()throws Exception {         FileInputStream inputStream = new FileInputStream("D:aplustest.txt");         int b;         byte[] bytes = new byte[2];         while ((b = inputStream.read(bytes)) != -1) {             System.out.println(b);             System.out.println("======");             System.out.println(new String(bytes));         }         inputStream.close(); }
  输出结果:12
  31
  23
  12
  32
  我们发现结果不正确,最后一个为啥是32,这是由于最后一次读取时,只读取一个字节3,数组中,上次读取的数据没有被完全替换,所以要通过len ,获取有效的字节。   每次读取后,把数组的有效字节部分,变成字符串打印   代码改造如下:   public static void testFileInPut1()throws Exception { FileInputStream inputStream = new FileInputStream("D:aplustest.txt"); int b; byte[] bytes = new byte[2]; while ((b = inputStream.read(bytes)) != -1) { //System.out.println(new String(bytes)); System.out.println(new String(bytes,0,b)); } inputStream.close(); }   2、字节输出流(OutputStream)   OutputStream抽象类输出流是所有类的超类(父类),将指定的字节信息写出到目的地。定义了字节输出流公共方法。   1、public abstract void write(int b)   2、public void write(byte b[])   3、public void write(byte b[], int off, int len)   4、 public void flush()   5、public void close()   我们以FileOutputStream写出文件为例   使用FileOutputStream写出字节数据主要通过Write方法,而write方法分如下三种public void write(int b)   public void write(byte[] b)   public void write(byte[] b,int off,int len) //从`off`索引开始,`len`个字节   1、write(int b)每次写出一个字节数据,代码如下:public static void testFileOutPut()throws Exception { FileOutputStream outputStream = new FileOutputStream("D:aplusout.txt"); outputStream.write(98); outputStream.write(99); outputStream.flush(); outputStream.close(); }   2、写出字节数组:write(byte[] b),每次可以写出数组中的数据,代码如下: public static void testFileOutPut1()throws Exception { FileOutputStream outputStream = new FileOutputStream("D:aplusout.txt"); byte[] b = "我是java高手".getBytes(); outputStream.write(b); outputStream.close(); }   3、写出指定长度字节数组:write(byte[] b, int off, int len) ,每次写出从off索引开始,len个字节,代码如下:   public static void testFileOutPut2()throws Exception { byte[] b = "java".getBytes(); outputStream.write(b,0,2); outputStream.close(); }   FileOutputStream实现数据追加续写   FileOutputStream提供了一个构造函数FileOutputStream(File file, boolean append),当boolean为true时表示追加数据。   public static void testFileOutPut3()throws Exception { FileOutputStream outputStream = new FileOutputStream("D:aplusout.txt",true); byte[] b = "java".getBytes(); outputStream.write(b); outputStream.close(); }   3、文件拷贝   上面已经详细介绍了字节输入和输出流,我们现在做一个例子实现图片的拷贝。   上面的写法不规范,下面我们写一个规范的文件拷贝,代码如下:public static void filePhotoCopy() { FileInputStream inputStream = null; FileOutputStream outputStream = null; try { inputStream = new FileInputStream("D:aplusIO流.png"); outputStream = new FileOutputStream("D:aplusIOCopy.png"); byte[] b = new byte[1024]; int i; while ((i = inputStream.read(b)) != -1) { outputStream.write(b,0,i); outputStream.flush(); } System.out.println("拷贝完成"); } catch (Exception e) { } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } if (outputStream != null) { try { outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } }   三、处理流和转换流   处理流和节点流一块使用,在节点流的基础上,再套接一层,套接在节点流上的就是处理流。   常用的处理流缓冲流: BufferedInputStream 、BufferedOutputStream、 BufferedReader、 BufferedWriter 增加缓冲功能,避免频繁读写硬盘。 转换流: InputStreamReader 、OutputStreamReader实现字节流和字符流之间的转换。 数据流: DataInputStream 、DataOutputStream 等-提供将基础数据类型写入到文件中,或者读取出来。

稀土元素提供了巨大的潜力研究人员已经获得了类稀土元素超固性的证据。来源因斯布鲁克大学在第一次创造玻色爱因斯坦凝聚物25年后,自然物理杂志发表了一期关于超冷量子气体领域发展及其未来潜力的焦点问题。例如,原子十二年的轮回HTC从一机难求到无机可售它曾经是全球最大的WindowsMobile智能手机生产商,也曾经是全球最大的智能手机代工和生产厂商。它曾经是安卓阵营的头号玩家,也曾经在MWC上把苹果和三星挑落马下,荣膺2010小米12真机就这样?把我看哭了12月的新机不少,不过要说关注度比较高的机型,小米12应该算一个。早在月初骁龙8Gen1发布的时候,小米董事长雷军,就带着小米12即将推出的消息官宣。虽然说正式的预热,最近小米还迟荣耀60和荣耀60pro区别点在哪里,对比哪个好华为手机品牌荣耀在12月1日发布了自己新一代60系列,包括了两款手机,分别是荣耀60和荣耀60pro,那么它们之间有什么区别,哪个更值得入手呢,下面跟着小编一起看看。一外观方面荣耀小米12渲染图出现了,k50系列处理器使用原则曝光?小米12的渲染图出现了,基本上和曝光的手机壳差不多,当然红米k50手机看起来也曝光了一些配置,简单看看这些新消息吧!小米12系列基本上确定使用竖向排列的摄像头设计思路,当然有一个大再见吧!伊巴卡目前,202122赛季常规赛正在热火朝天进行中,参赛各队都在为拿到更出色的战绩积极备战着,力争帮助球队在季后赛中走得更远,赛事因此愈加精彩激烈,吸睛无数。与此同时,逐渐热闹的交易市醒来一场大胜,116107胜活塞止连败我想对阵活塞这场比赛基本没人守着看吧,凌晨一点确实有点过分!我记得我这么晚还在看比赛的时候,还是火箭西决对阵勇士的那个时候,那时候都是凌晨23点,定好闹钟早早的泡个咖啡等着。对阵活离开快本的主持,谢娜在家做菜,李维嘉两个月没露面24年后,快乐大本营解散,让不少人为之惋惜,毕竟这是许多人的青春记忆,但这就是现实,告别旧的生活,更符合生存法则。到现在为止,关于快乐大本营被换掉的传闻越来越多,而且官方也没有直接拍照手机徕卡和蔡司的实力对碰,是华为独领风骚还是VIVO横空出世说到拍照最强的手机可能大部分人都会想到华为的徕卡,毕竟它早在16年时就开始和徕卡联合合作,也是打出了很好的人气和名声,那么VIVOX60Pro的蔡司镜头有多强呢,下面一起看。先看华买手机不要冲动,目前这4部旗舰机最值得买,看看你选中了哪部?有些人买手机很冲动的,看到一些手机配置方面很顶,就开始变得不管不顾了,直接掏钱买!其实有钱还好一点,如果并不是很富裕的话,你到时肯定会后悔的。所以,买手机不要冲动,最好能够根据自己华为P50Pocket售价预测,纵向折叠屏卖这个价你能接受吗?近日华为终端官方微博宣布,华为P50Pocket将于12月23日发布。据爆料,华为P50Pocket或为华为首款纵向折叠旗舰,目前网络上已有华为P50Pocket疑似渲染图流出,I
世界上唯一的原始部落所有去过的男性都要献身神秘原始的非洲大陆,坐落着很多原始部落,他们深处丛林之中,自力更生,从不跟外界交往。(此处已添加小程序,请到今日头条客户端查看)而今天跟大家介绍非洲大陆一处历史悠久的原始部落,女人隐入幽山的世外桃源漳县新联村甘肃省。定西市。漳县在定西漳县的乡野田间放慢时光,在农家院落和亲朋好友畅享欢聚这样的田园生活,你向往吗?漳县。新联村陇上乡遇是甘肃省文旅厅推出的一个乡村旅游品牌围绕乡宿乡游乡味乡识喝茶打嗝茶气很足?真的是这样吗?在茶区品饮茶,有一种民间说法喝好茶会打嗝。谓之茶气周末,小A去朋友茶店喝茶几杯下去后,就打一个满满的嗝朋友一脸认真地说看吧,茶气很足!喝茶打嗝茶气很足?真的是这样吗?茶气是什么?如长期不吃红肉易缺乏哪种营养?关于吃肉,有一种说法四条腿不如两条腿,两条腿不如没有腿。其中,猪肉牛肉羊肉就是四条腿的代表,而鱼是没有腿的代表。这主要是从脂肪酸含量和脂肪酸组成方面考虑的。吃肉顺序优先鱼虾类鱼虾类延安的6大美食,当地人百吃不厌,外地人看了直摇头,实在吃不下延安是国家风景独特的旅游城市,这里的自然风光迷人,还有很多人文景观,来到这座城市,除了观赏美景以外,必要品尝当地的美食。延安当地有6大美食,当地人百吃不厌,外地人看了却直摇头,实在饭店炒的土豆为什么那么好吃?原来是这样做的,出锅酥甜又开胃生活没有彩排,美食没有美颜。大家好,今天给大家分享一个土豆不一样的吃法。土豆,我们生活里面非常常见的一种非常普通的食材。土豆可以用来做成非常好吃的各种美食,味道都是超级棒的。接下来被骂到降价?嘴上接棒保时捷,小鹏G9上市两天降三万别人是开完发布会预订,小鹏是开完发布会退订?这可能是有史以来,降价最快的一款车。三天前,小鹏汽车的新车发布会上,小鹏的创始人何小鹏,刚刚揭秘了新车G9的价格。但就在昨天下午,小鹏汽30分钟通过Kong实现。NET网关什么是KongOpenrestry是一个基于Nginx与Lua的高性能平台,内部有大量的Lua库。其中ngxluamoudule使开发人员能使用Lua脚本调用Nginx模块。Kon9月27日股市早知道元宇宙版双11呼之欲出元宇宙电商率先爆发今年双11大促期间,阿里将首次引入元宇宙大陆曼塔沃斯,消费者可在元宇宙中创造数字分身,并在元宇宙中获得双11的新消费体验。今年双11晚会上也双面大佬余承东语出惊人?背水一战美国制裁两年有余,华为终端业务持续缩水,连带着整个集团寒气弥漫。作为华为终端业务代言人的余承东,正在试图为华为开凿出新的沟渠引入活水。一个是两次带领华为逆境突围的明星高管,一个是频乐视学新东方直播一月卖出2万?网友李佳琦2秒就完成还记得那个欠下109亿巨债,但全网都在羡慕的乐视吗?早在2个月前,乐视就因为没有老板且不用996的神仙职场生活而上了热搜,然而就在最近,潇洒已久的员工们却突然自爆全员累病。此消息一乏力就是气虚?补中益气丸没用?教你三个小方法,补足你的气血精很多朋友跟我反应,说自己天天觉得身上没劲儿,干什么都提不起精神来,觉得自己是气虚了,但是补气的药吃了一大堆,什么人参黄芪泡水,补中益气丸等等,吃了以后呢也没见有什么效果,那这是怎么FIFA23掉线卡顿延迟高解决方法FIFA23将于2022年10月1日发售,已上线Steam商店页面并开启预售,FIFA23和之前的系列一样,在裸连的情况下也很容易发生掉线卡顿以及游戏延迟很高的情况,很多小伙伴不知NASA将实施首次行星防御测试,用航天器将小行星撞离轨道(观察者网讯)在距离地球1100万公里远的地方,美国国家航空航天局(NASA)一台历经十个月太空之旅的行星防御测试器即将向一颗小行星发起撞击,开启世界首次行星防御任务的实地试验。据中年以后,用儒家立世,用佛学调心,用道家赋能人来到这个世界,从幼年的童稚,到少年的懵懂,到青年的热情,生命像画卷一样展开,又仿佛是一方水域,最初看到的是浅溪,然后是长河,到了中年便是汪洋大海,其中的险滩,暗礁,巨浪都经历过,世间的真相是什么?怎样才能活成一个强者?12个锦囊送给你天黑路滑,社会复杂迷茫时来看看我的文章,每天吸取一点不一样的收获下面12条精心总结的话送给你,相信看完会对你大有裨益读万卷书不如行万里路,行万里路不如有高人指路。比你更强的人,身上怀旧天龙最强门派曼陀山庄来了!瞬移!回血!群控当!当!当!诸位大侠好哇!我是小当家,流星雨闭门古练神功去了,以后普通更新将由我爆料啦!今天曼陀山庄终于掀开了她神秘的面纱,登录测试服啦。获知此消息的小当家,马不停蹄的前往建号,把90后打工人不再相信东亚卷王稻盛和夫2007年,一个龙岩人从微软离职,加入了自己老乡王兴创办的饭否公司。王兴除了给了他技术合伙人的位置,还给了他一本名叫活法的书。书里活着就是为了工作的理念深深打动了他,也让他记住了书国产彩电逆袭往事从日企垄断下夹缝求生到走出海外反攻索尼老家进口电视为什么不香了?作为一个九零后,小的时候,日本进口电视在国内大行其道,当年很多家庭,都以有一台日本进口彩电为荣。记得当时隔壁邻居买了一台松下彩电,整一栋楼的人都来观赏,那场面讲好一片茶叶的故事以茶为内核的线性文化遗产形成清晰的交通贸易线路,千百年来,虽有起落盛衰,但茶的外输出口和文化交流,见证着中国与世界的联系在世界文化与自然遗产武夷山脚下,有一个村子叫下梅村,这里是享七款不起眼的中草药,能辅助治疗肝肿瘤,可惜很多人不知道中医历史悠久。当患有一些疾病时,用中药来缓解,不仅有很好的治疗效果,而且可以减少对身体的副作用。其实生活中一些不起眼的中草药可以辅助治疗肝肿瘤,对其他肿瘤问题也有积极的作用。1僵蚕喜欢穿别人旧衣服的人,往往有以下心理文夏莫01卷首语衣服,有时就像是一面镜子,能清晰地反映出人的性格。不一样的人会对生活有不一样的理解,穿衣打扮也会有很大的不同。有的人,喜欢花钱买衣服,觉得每天穿不同的衣服,能展现自