2015年国庆以后,很庆幸加入了我们学校的"移动互联网实验室",当时加入实验室只是一个C语言和java语言初学的毛头小子。2015国庆年至2015年12月完成了小组之间的第一个任务“趣味测试”,现在觉得好low,也是在这一段时间自己接触了Android开发,初学了一些关于Android的基础知识。2016年3月开学归来,转眼之间就是大二下学期,参加了人生中第一个项目“i西科”app产品的研发,3月到4月阶段基本出于阅读该APP的源代码阶段,大致在4月份左右,师兄师姐都准备春招,所以实验室的主力基本变成了我们这些大二的毛头小子,实验室的老师也若由我们折腾。在一边上课一边研发中(遗憾的是数据结构没学好),时间就到了9月份,在这之前,自己在网上浏览器大量关于Androd开发的知识(自己学习中遇到的),当然在这过程中自己也没做一些有用的笔记,但自己遇到过的问题大多存储在记忆中,同时喜讯传来师兄师姐都拿到了不错的offer,比如京东,美团,去哪,百度,新浪等大型企业。9月份,自己也就是大三了,10月份,自己带领一个四人小组的团队完成了实验室老师拿到的一个项目(这时"外包"这个名词进入了我们记忆中),我们用很P的技术,很P的编码格式完成了该项目,在这过程中被老师骂的天翻地覆。11月份,有重回"i西科"这个项目组,负责后期APP的完善工作,花了大量时间优化代码。到了2017年,一个新的开始,我们有当初的小鲜肉转变为老腊肉,跟随师兄师姐的步伐,准备春招(体验一下,为暑假的秋招做准备)。春招长话短说,大中型企业注重基础,当然985/211这些学校里人们的潜意识里比我们这种二流的本科学校基础好了不知几倍,确实如此,在春招这个过程中,自己发现基础真是硬伤,(虽然接到去哪儿(没面)和阿里的面试,自己面得一塌糊涂)。

以上知识笔者回忆一下之前学习经历得感慨,读者可自行掠过。

以前写代码时,关于文件得输入输出和缓冲,虽然了解,但是没仔细想想里面得机制,这些天又重读了一下java方面得书,顺便总结一下,当作笔记。

学过物理得读者相信一定知道参考系这个概念,其中提到了相对和绝对等概念,在这里的java输入和输出是相对而言。

“流”是一种相对概念,从键盘输入数据,将处理结果写入文件,以及读取文件的内容等动作都可视为流的操作。流里面的数组又字符(charater)和位(bits)构成,看下图有助于理解。

在java中,可以通过InputStream,,Reader类来处理输入,OutputStream,Writer类来处理输出(Reader和Writer可以参照上图来理解)。其中InputStream和OutputStream来处理二进制文件(例如服务器发来的数据中含有一个下载链接,就要转化为InputStream来下载了),而Reader和Writer是用来处理纯文本文件(text file)。

笔者在这取个例子 :

“文件的读取”

1:你要读取文件,首先要获取一个读取文件的对象,例如FileReader 类的对象 fileReader(用流来解释解释:文件的数据读取到程序中,即为输入流)

2:根据获取到的对象 fileReader来实现文件里面的数据读入到程序里面(文件在外存,即硬盘或磁盘,程序在内存)

3:得到了全部数据之后,你就要把读取文件的对象关掉,即回收或kill掉

“文件的写入”

1:你要从把程序里面的数据写入到文件里面,首先要获取一个写入文件的对象,例如FileWriter类的对象fileWriter(用流来解释:程序的数据写入到文件中,即为输出流)

2:根据获取到的对象fileWriter来实现程序的数据写入到程序里面

3:数据写完之后,你就要把写入文件的对象关掉,即回收或kill掉

接下来,我们再说说缓冲区(buffer)

缓冲区其实就是文件和程序之间访问的桥梁。具有缓冲区的文件处理方式是在访问时先把数据放置到缓冲区,而不是直接从磁盘中读取,这种处理方式的好处是不需要不间断的从磁盘读取数据,因此可以增加程序执行的效率。缺点也就很明显了,缓冲区既然要存储数据,那肯定需要暂用内存了,现在一般pc的内存是4G或8G,还有就问你电脑系统死机或文件没有关闭,缓冲区的数据何去何从?

下面我们画图来解释这种结构吧

相信读者看了上图也就懂了,笔者也就不做过多介绍了。

java 输入流,输出流和缓冲区的个人学习感悟相关推荐

  1. java输出流缓冲区内容清除,Java输入输出流与缓冲区的使用

    Java输入输出流与缓冲区的使用,有需要的朋友可以参考下. 一,Input/Output流: 将外设中的数据读取到内存中就是输入. 将内存中的数据写入到外设中就是出. I/O流就是用来处理设备间的 . ...

  2. JAVA编码(5)——JAVA输入流输出流

    1.什么是IOJava中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读写 ...

  3. java输入流输出流的互相转换(不需要经过临时文件啦超方便)

    写在前面 工作中经常会遇到,将一个或多个文件读取,然后压缩,然后再怎么怎么做. 如果每个过程都需要创建一个临时文件,可能会创建许多临时文件,那么就可以将输入输出流无缝衔接,不需要使用临时文件了. 解决 ...

  4. JAVA输入输出流学习心得

    JAVA输入输出流 本文主要从以下几个方面总结JAVA输入输出流 1.什么是流?什么是输入输出流? 2.字节流与字符流 3.Scanner 什么是流? 举个例子,水龙头里流出的水流就是流.从水龙头里流 ...

  5. java输入流和输出流

    前面介绍了Java.io包的File类,File类用于目录和文件的创建.删除.遍历等操作,但不能用于文件的读写. Java 对文件的写入和读取涉及到流的概念,写入为输出流,读取为输入流.如何理解流的概 ...

  6. java输入流从指定字节读取,JAVA输入输出流-字节流篇

    当前位置:我的异常网» 综合 » JAVA输入输出流-字节流篇 JAVA输入输出流-字节流篇 www.myexceptions.net  网友分享于:2013-08-14  浏览:8次 JAVA输入输 ...

  7. Java当中 文件得输入流 输出流

    一:引言 InputStream 和 OutputStream 两个抽象类,我们主要用其实现类来操作 二:InputStream 输入流,从文件当中读数据到程序当中,我们要站在程序得角度上. pack ...

  8. java重定向输出流到文件(从文件到输入流)

    java重定向输出流到文件(从文件到输入流) 如何重定向呢?先看看以下代码 public class Run{int age;String name;String sex;public void go ...

  9. Java NIO基础之缓冲区buffer(笔记 day01)

    学习笔记,仅供参考,禁止搬运,如有不正确的地方欢迎大家指正,谢谢!!! 一.缓冲区buffer  代码 package com.lihefei.nio.day01; import org.junit. ...

最新文章

  1. usaco street race(dfs)
  2. ios 自动打包命令_iOS自动打包上传脚本
  3. pandas.get_dummies函数用法详细解答(实践)
  4. 【shiro】使用shiro搭建的项目,页面引用js,报错:Uncaught SyntaxError: Unexpected token ...
  5. 如何让搜索引擎抓取AJAX内容
  6. 【NLP】文本相似度的BERT度量方法
  7. 便携式计算机推销洽谈方案,推销洽谈的方法
  8. python怎么把两个文件合并工具_python开发目录合并小工具 PathMerge
  9. 数字信号处理--7.3--基础篇
  10. visual studio使用小技巧(以vs2012为例)
  11. 游戏修改器制作教程五:OllyDBG和其他调试工具
  12. 题解 [LuoguP5560][Celeste-B]Golden Feather
  13. 48 Fixing relationship Problems with Humor 用幽默解决人际关系问题
  14. qt opengl 混合实现半透明
  15. FPGA niosII 视频笔记--小梅
  16. 【selection】 学习光标API并实现编辑区插入表情图片的功能
  17. 报错原因高的地图调用mapView.onDestroy() 崩溃问题
  18. form表单中onclick事件和onsubmit事件的执行顺序
  19. 【MPI编程】矩阵向量乘法--解法三(子矩阵块分解)【高性能计算】
  20. labelme设置生成label_viz.png中的图例大小

热门文章

  1. 重磅发布 , 阿里云全链路数据湖开发治理解决方案
  2. 陈大惠老师:sq泛滥对现代人的伤害
  3. mysql电量_BBU电池电量的监控
  4. oracle错误oui 25031,搭建Oracle10gRAC过程中出现OUI-25031的解决办法
  5. 1148026-99-6,Bromo-PEG3-phosphonic acid,Bromo-PEG3-C2-phosphonic acid,PEG连接剂
  6. c语言实验报告大气,室内环境舒适度评价分析实验报告
  7. UML:类图复习-鸡生蛋,蛋生鸡
  8. 美女当道 12星座最适宜的整容术
  9. 浅析dva (史上最全的dva用法及分析)
  10. 继K1之后浪潮发布M13,这一次瞄向了大型关键业务应用