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

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 等-提供将基础数据类型写入到文件中,或者读取出来。

春风起,嫩笋出,建议八道春笋美食别错过,笋肉鲜美,营养价值高大家好,这里是邱哥说美食,春天是万物复苏的季节,在春风和春雨滋润下,不仅到处鸟语花香嫩草成茵,百花齐放,作为春天野菜春笋,也在不甘寂寞地破土而出,来感受春天这个美好的季节。因此,每40年前,在长城上第一个喝可乐的小男孩,如今怎么样了?鲁迅先生曾经称赞第一个吃螃蟹的人是很令人佩服的,不是勇士谁敢去吃它呢?当一个新鲜事物出现在我们面前的时候,我们会因为害怕而裹足不前,同时对那些勇于尝试的人敬佩不已。1979年,一个狂飙里馋哭大家的美食,这2种并不适合糖尿病病友,建议吃这4种开年,高开疯走大剧狂飙赚足了关注度。除了飙戏之外,强哥爱吃的猪脚面也备受关注。今天就给大家扒一扒剧中的这些美食肠粉干炒牛河虾饺油条饺子是否适合糖尿病病友吃?这2种美食不适合糖尿病病2022年北京市顺义区农村产权交易成交金额超1。9亿元2022年,北京顺义区农村产权交易挂牌项目累计挂牌157宗,成交133宗,成交金额超过1。9亿元。通过竞价,合同期内为集体经济组织增加收入超1000万元,减免交易服务费近78万元,北京大学双加时战胜清华大学夺得第25届CUBAL北京赛区冠军直播吧2月27日讯在昨天结束的一场CUBAL一级联赛中,北京大学8076战胜清华大学,夺得北京赛区冠军。首节伊始,双方攻防情况都十分焦灼,清华8号石奎一个抢断配合朱思禹的快攻上篮率爱奇艺不再限制投屏,消费者小胜一局2月20日,爱奇艺在官微公布将做出两项重要调整一是为仍处于订阅状态的爱奇艺黄金VIP会员用户恢复720P和1080P清晰度的投屏服务二是爱奇艺会员可在5台设备上登录,不再限制登录设海南省2023年考研初试成绩公布查询通道海南省2023年全国硕士研究生招生考试(初试)评卷及分数统计工作已结束,现将成绩向社会公布,供考生查询。凡报考2023年海南省研究生招生单位的考生,请登录海南省2023年全国硕士研李沧公证处在线普法,解读遗嘱法律知识大众网海报新闻记者侯祥家通讯员李婉舒青岛报道近年来,人口老龄化持续加深,公证养老需求日益突显,综合养老公证法律服务的需求越来越迫切。李沧公证处坚持以人为本,建立起一整套包含遗嘱附条奋进的春天新年新气象,购物车里满当当!2023开局伊始,消费市场喜迎开门红。跨省旅游人群熙攘,餐饮零售供销两旺,休闲消费异彩纷呈。强信心,促消费,各地消费券消费节消费补贴应接不暇在线文娱养生保健智能家居等消费新热点层出三地协力见证粤港澳大湾区成长央视网消息四年前,粤港澳大湾区发展规划纲要正式发布,四年间,三地协力融通的粤港澳大湾区,如今什么样?粤港澳大湾区包括香港澳门特区和广东广州深圳珠海等珠三角九市。数据显示,到2022提前还贷登上热搜!专家建议适度降低存量房贷利率有消息称,针对近期反映较多的房贷提前还款难预约时间长等问题,央行银保监会2月9日召开部分商业银行座谈会,要求商业银行强化以客户为中心的理念,保障客户合法权益,改进提升服务质量,按照
橙黄橘绿时无所畏无所忧新书榜单原标题橙黄橘绿时无所畏无所忧无所畏无所忧启功著花山文艺出版社本书讲述了从孤儿到一代宗师的成长之路,是启功关涉人生主题的散文集。书中,启功谈古今谈人间谈艺术。自己为什么不愿意中国大批采购空客飞机国际航空市场波澜再起一段时间以来,受世界经济形势和新冠疫情的双重影响,国际航空市场持续低迷。一些重要国际航线频频关闭或减少,不时有人到国外出差旅行,却因当地航班停摆而滞留。许多航空公司飞行员失业或被迫美国间谍卫星抵近侦察,欲窥视中国卫星,反被中国卫星反侦察近些年,随着科技的发展,各国纷纷发射大量的人造卫星升空比如马斯克预计发射42000颗星链卫星,为地球提供卫星网络。而中国近些年紧锣密鼓地发射大量的卫星,在各个领域摆脱美国的限制。然香港回归25周年,再次回顾南京条约香港回归25周年,感慨万千,我们感慨国家的崛起,却又不得不以史为鉴,想起那段屈辱的历史。在19世纪以前,中国自给自足的经济形式以及一系列复杂的缘故,中国和西方国家没有邦交。那时候中第二章血雨宫廷东汉到了桓灵二帝时已失去了民心,灵帝是个贪图享乐的人,他早年被外戚窦氏选为皇位继承人,在建宁元年(即168年)正月即位。在他统治时期,巧立名目搜刮钱财,民不聊生。正如诸葛亮所言亲小7月2日澳洲最新房价变化本周更新的CoreLogic五个主要首府城市房价指数变化显示,在截至6月30日的一周内,澳洲首府城市房价下跌幅度接近1,连续第八周下跌。整个6月悉尼房价下跌了1。6初代外国红人大山,和他离开中国的真相前一段时间令人震惊的缅北血奴事件大家应该都有关注,我们的同胞被外国不法分子用手段骗到缅甸去抽血赚钱,活生生的人被当作工具,这是有多么狠毒的心!然而这件事情也牵扯了一些活跃在国内短视国土差不多是中国2倍,人口却只有中国114?俄罗斯人都哪去了?俄罗斯横跨亚欧大陆,国土总面积达到了1709。8万平方公里,是世界上面积最大的国家。但你能相信吗?就是这样可以抵得上两个中国的国土面积,全国总人口却只有中国的114。俄罗斯完全可以从维护国家安全高度保障粮食安全来源经济日报粮食事关国计民生,粮食安全是国家安全的重要基础。我国始终高度重视粮食安全问题。党的十八大以来,以习近平同志为核心的党中央立足世情国情粮情,确立以我为主立足国内确保产能适陈都灵的腰太不真实了,穿超小码镂空裙都宽松,好似一把能握住今天穿什么变美百科全书就要这么穿女性的穿搭中总是充满了各种有趣的款式和设计,尤其是一些休闲风格的服装中,更是有很多新潮的款式可以给人惊喜。不过生活中其实有很多女性并没有专业的穿搭能2022辅警要翻身了,达到条件有望入编,转正不再是空谈很多人的梦想,都是长大后当一名警察,这是一个光荣的梦想。保卫国家,保护人民财产安全这些都是警方的工作,小至为迷路的孩子寻找回家的方向。社会进步也会带来相应的安全问题。警察有广泛的职