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

分类:

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

  数据类型:字符流(文本数据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,自学不好吗?

    买了这么多课程,有哪一门是你从头到尾听完,并且能将知识点学以致用的?如果你想成为一名相对优秀的程序员,建议你读完这篇文章,如果愿意可以分享给你的朋友. 2018过去的一年,对大多数互联网人来说,201 ...

  2. mysql一个非常实用解决sql查询优化的函数explain

    前言: 项目中有个表有几万条数据,然后还要关联其他表,查询条件也有点多,再没有其他查询条件下,默认时间查询条件如果是查一年的数据的话,查询时间那是慢得可怕. 找总监去优化sql,看他用了一个sql函数 ...

  3. SpringBoot:Invalid character found in method name. HTTP method names must be tokens

    问题背景 关于SpringBoot应用挂了很久之后,会发生Invalid character found in method name. HTTP method names must be token ...

  4. python高级编程笔记一 正则表达式

    事例

  5. django模板引擎自定义变量

    定义临时变量: {% with i=1 %} {{i}} {% endwith %} 定义对临时变量操作的tag 在templatetags中创建set_val.py 内容是 from django ...

  6. ASP.NET Core 2.x On Ubuntu

    安装.NET Core 首先需要安装.NET Core Runtime: https://www.microsoft.com/net/download 点击之后,根据您的Linux发行版不同,选择相应 ...

  7. docker 笔记

     批量删除Docker中已经停止的容器[转] 方法一: #显示所有的容器,过滤出Exited状态的容器,取出这些容器的ID, sudo docker ps -a|grep Exited|awk '{p ...

  8. log4j2日志模板

    log4j2.xml <?xml version="1.0" encoding="UTF-8"?> <!--设置log4j2的自身log级别为 ...

  9. [转载] .NET 中可以有类似 JVM 的幻像引用吗?

    近日发现一篇不错的文章,文中列举了一些 GC 场景,探讨了 在 .NET 中是需要实现像 JVM 的中的幻像引用.有人质疑其不切实际,也有像 Ayende 大神一言不合就自己做了个 demo. Do ...

  10. 【LUOGU???】WD与地图 整体二分 线段树合并

    题目大意 有一个简单有向图.每个点有点权. 有三种操作: 修改点权 删除一条边 询问和某个点在同一个强连通分量中的点的前 \(k\) 大点权和. \(n\leq 100000,m,q\leq 2000 ...