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

分类:

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

  数据类型:字符流(文本数据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. 三。Hibernate 注解形式

    Hibernate支持JPA注解的jar包 JPA全称: Java Persistence API JPA和Hibernate之间的关系,可以简单的理解为JPA是标准接口,Hibernate是实现. ...

  2. mybatis动态数据更新 + 批量动态数据插入

    动态更新 <update id="updateElevator" parameterType="com.diantijiang.saas.data.elevator ...

  3. Flask--偏函数, 线程安全, 请求上下文

    一 . 偏函数 from functools import partial def func(a, b): return a + b new_func = partial(func, 3, 4) # ...

  4. 正则 re模块

    Python 正则表达式 re 模块 简介 正则表达式(regular expression)是可以匹配文本片段的模式.最简单的正则表达式就是普通字符串,可以匹配其自身.比如,正则表达式 ‘hello ...

  5. Ubuntu 16.04 安装opencv3.4.5/cuda/caffe并使用jni笔记

    因操作失误,误卸开发机NVIDIA显卡驱动,先更新操作日志如下: 1>NVIDIA驱动重装 1.卸载系统里的Nvidia残余 sudo apt-get purge nvidia* 2.把显卡驱动 ...

  6. Python神器 Jupyter Notebook

    什么是Jupyter Notebook? 简介 Jupyter Notebook是基于网页的用于交互计算的应用程序.其可被应用于全过程计算:开发.文档编写.运行代码和展示结果. Jupyter Not ...

  7. 实用HTML5游戏资源

    awesome games Web-First游戏引擎协同构建令人惊叹的HTML5可视化和游戏 HTML5游戏开发者和技术传播者,华沙,波兰- @EnclaveGames独立工作室的创始人   代表作 ...

  8. 阿里云配置安全组(配置入口port)

    访问:www.aliyun.com 登录后,左上角点击: 点击[云服务器] 点击右下角[配置规则] 入口 出口

  9. bzoj3168 钙铁锌硒维生素 (矩阵求逆+二分图最小字典序匹配)

    设第一套为A,第二套为B 先对于每个B[i]判断他能否替代A[j],即B[i]与其他的A线性无关 设$B[i]=\sum\limits_{k}{c[k]*A[k]}$,那么只要看c[j]是否等于零即可 ...

  10. 常用API接口签名验证参考

    项目中常用的API接口签名验证方法: 1. 给app分配对应的key.secret2. Sign签名,调用API 时需要对请求参数进行签名验证,签名方式如下: a. 按照请求参数名称将所有请求参数按照 ...