作用:读写设备上数据、硬盘文件、内存、键盘、网络等。

分类:

  数据走向:输入流、输出流

  数据类型:字符流(文本数据Reader或者Writer结尾)

       字节流(所有类型Stream结尾)

  1个字节 = 8位二进制  字节是存储信息单位,计量单位

  字符:抽象的一个符号

  字符集:编码,ANSI编码标准

  字节流->字符

  FileInputStream fis = new FileInputStream("text.txt");

  byte inpyt[] = new byte[21];

  fis.read(input);

  String inputString = new String(input,"UTF-8");

  fis.close();

  字符->字节流

  FileOutputStream fos = new FileOutputStream("text.txt");

  String outString = "";

  byte output[] = outString.getBytes("UTF-8");

  fos.write(output);

  fos.close();

  文件拷贝:

  FileInputStream fis = new FileInputStream("a.gif");

  FileOutputStream fos = new FileOutputStream("b.gif");

  byte input[] = new byte[50];

  while(fis.read(input)!=-1){fos.write(input);}

  fis.close();

  fos.close();

  缓冲区加速度:

  FileInputStream fis = new FileInputStream("");

  BufferedInputStream bis = new BufferedInputStream(fis);

  FileOutputStream fos = new FileOutputStream("");

  BufferedOutputStream bos = new BufferedOutputStream(fos);

  byte input[] = new byte[100];

  while(bis.read(input)!=-1){bos.write(input);}

  bis.close();

  fis.close();

  bos.close();

  fos.close();

  系统时间返回的是1970年到现在的毫秒数。

  优化速度:1、缓冲区大小。2、字节数组的大小。

  

  使用字符流:

  FileInputStream fis = new FileInputStream("");

  InputStreamReader isr = new InputStreamReader(fis,"UTF-8");

  FileOutputStream fos = new FileOutputStream("");

  OutputStreamWriter osw=new OutputStreamWriter(fos);

  char input[] = new char[100];

  while(isr.read(input)!=-1){int l=0;while((l=isr.read(input))!=-1){osw.write(input,0,l)}}

  osw.close();

  fos.close();

  isr.close();

  fis.close();

  字符流缓冲:

  FileInputStream fis = new FileInputStream("");

  InputStreamReader isr = new InputStreamReader(fis,"UTF-8");

  BufferedReader br = new BufferedReader(isr);

  FileOutputStream fos = new FileOutputStream("");

  OutputStreamWriter osw=new OutputStreamWriter(fos);  //PrintWriter换行输出

  BufferedWriter bw = new BufferedWriter(osw);

  char input[] = new char[100];

  while(input = br.readLine!=null){br.write(input);}

  br.close();

  bw.flush();

  bw.close();

  osw.close();

  fos.close();

  isr.close();

  fis.close();

  文件的读写(纯文本):

  FileReader fr = new FileReader("");

  BufferedReader br = new BufferedReader(fr);

  RandomAccessFile:

  RandomAccessFile raf = new RandomAccessFile(file,"rw");

  raf.seek((block-1)*l);->指针

  raf.write();

 

  FileUtiles对file的操作特别方便:

  File fie = new File("");

  String input  = FileUtiles.readFileToString(file,"");

  FileUtiles.copyFile(file1,file2); 

  

I\O操作的更多相关文章

  1. 关于DOM的操作以及性能优化问题-重绘重排

     写在前面: 大家都知道DOM的操作很昂贵. 然后贵在什么地方呢? 一.访问DOM元素 二.修改DOM引起的重绘重排 一.访问DOM 像书上的比喻:把DOM和JavaScript(这里指ECMScri ...

  2. Sql Server系列:分区表操作

    1. 分区表简介 分区表在逻辑上是一个表,而物理上是多个表.从用户角度来看,分区表和普通表是一样的.使用分区表的主要目的是为改善大型表以及具有多个访问模式的表的可伸缩性和可管理性. 分区表是把数据按设 ...

  3. C# ini文件操作【源码下载】

    介绍C#如何对ini文件进行读写操作,C#可以通过调用[kernel32.dll]文件中的 WritePrivateProfileString()和GetPrivateProfileString()函 ...

  4. js学习笔记:操作iframe

    iframe可以说是比较老得话题了,而且网上也基本上在说少用iframe,其原因大致为:堵塞页面加载.安全问题.兼容性问题.搜索引擎抓取不到等等,不过相对于这些缺点,iframe的优点更牛,跨域请求. ...

  5. jquery和Js的区别和基础操作

    jqery的语法和js的语法一样,算是把js升级了一下,这两种语法可以一起使用,只不过是用jqery更加方便 一个页面想要使用jqery的话,先要引入一下jqery包,jqery包从网上下一个就可以, ...

  6. ASP.NET Aries 入门开发教程7:DataGrid的行操作(主键操作区)

    前言: 抓紧勤奋,再接再励,预计共10篇来结束这个系列. 上一篇介绍:ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑 本篇介绍主键操作区相关内容. 1:什么时候有默认的 ...

  7. 如何在高并发环境下设计出无锁的数据库操作(Java版本)

    一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...

  8. 【翻译】MongoDB指南/CRUD操作(四)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...

  9. 【翻译】MongoDB指南/CRUD操作(三)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(三) 主要内容: 原子性和事务(Atomicity and Transactions),读隔离.一致性和新近 ...

  10. 【翻译】MongoDB指南/CRUD操作(二)

    [原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...

随机推荐

  1. 从Python越来越想放弃的Day09

    今天在学几个新东东,又向py迈了一大步,依旧是从简单的开始,三元运算,又称三目运算,所谓三目,也就是二郎神,跑题了,简单的格式为v = 前面 if 条件 else 后面,条件为True时,则v = 前 ...

  2. Python学习案例之视频人脸检测识别

    前言 上一篇博文与大家分享了简单的图片人脸识别技术,其实在实际应用中,很多是通过视频流的方式进行识别,比如人脸识别通道门禁考勤系统.人脸动态跟踪识别系统等等. 案例 这里我们还是使用 opencv 中 ...

  3. keepalived的主从备份服务器

    一.环境说明 1.操作系统内核版本:linux 6.0 2.Keepalived软件版本:keepalived-1.1.20.tar.gz 二.环境配置 1.主Keepalived服务器IP地址 19 ...

  4. 菜鸟学IT之python3关于列表,元组,字典,集合浅认识!

    作业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2753 一.列表,元组,字典,集合分别如何增删改查及遍历. 列表 # 列表的 ...

  5. JS对JSON对象遍历输出的时候真的是按照顺序输出吗?

    对象的遍历输出并不是按照对象属性定义顺序来的,那么是按照什么规则来的呢,仔细深入研究你会发现,这还跟浏览器有关系,Chrome跟IE是不一样的,所以给出以下结论: Chrome Opera 的 Jav ...

  6. 回温js算法

    ---恢复内容开始--- 一,冒泡排序. 具体算法描述如下: <1>.比较相邻的元素.如果第一个比第二个大,就交换它们两个: <2>.对每一对相邻元素作同样的工作,从开始第一对 ...

  7. 【linux】Python3.6安装报错 configure: error: no acceptable C compiler found in $PATH

    安装python的时候出现如下的错误: [root@master ~]#./configure --prefix=/usr/local/python3.6 checking build system ...

  8. maven:私服的相关配置

    添加到settings.xml中 <server> <id>releases</id> <username>admin</username> ...

  9. sql语句基础

    数据库库(DataBase):就是一个存储数据的仓库.为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上.通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据.SQL(Structu ...

  10. 内存泄漏(Memory Leak)

    什么情况下会导致内存泄露(Memory Leak)? Android 的虚拟机是基于寄存器的Dalvik,它的最大堆大小一般是16M,有的机器为24M.因此我们所能利用 的内存空间是有限的.如果我们的 ...