1:缓冲流 BufferedReader  BufferedWriter

具有较强的读写能力,能单独读写一行数据,能够减少对硬盘的访问次数。

 /**
* 缓冲流 能够增强对问价数据的可读性,减少访问读取硬盘的次数,提高效率
* */
public static void bufferedDemo() throws IOException{
File fread=new File("E:\\input.txt");
File fwrite=new File("E:\\output.txt");
System.out.println("文件:"+"E:\\output.txt"+"是否可读"+fwrite.canWrite());
BufferedReader bis=null;
BufferedWriter bos=null;
FileReader fis=new FileReader(fread);
FileWriter fos=new FileWriter(fwrite);
bis=new BufferedReader(fis);
bos=new BufferedWriter(fos);
//读取文件数据,打印展示
int lineLen=0;
String arrayStr[]=new String[20]; //创建数组,存储读取内容
String temp;
while((temp=bis.readLine())!=null){
System.out.println(temp);
arrayStr[lineLen]=temp;
lineLen++;
}
System.out.println("文件读取完毕");
//输出数据
String s;
while((s=bis.readLine())!=null){
bos.write(s);
bos.newLine(); //插入换行符
}
System.out.println("数据输出完毕。");
bos.flush();
bis.close();
bos.close();
}

2:随机流 RandomAccessFile

RandomAccessFile流,既可以读取文件中的数据,也可以写进文件中的数据的一种流

 /**
* 随机流 可读可写的类型RandomAccessFile
* @throws IOException
* */
public static void RandomAccessDemo() throws IOException{
//单独使用Random写进一些数据,在读出来
int data[]={1,2,3,4,5,6,7,8,9};
File fileName=new File("E:\\RandomAccessFile.txt");
if(!fileName.exists())
fileName.createNewFile();
RandomAccessFile raf=new RandomAccessFile(fileName, "rw");
for(int i=0;i<data.length;i++){
raf.writeInt(i);
}
System.out.println("数据写入完毕。");
//读取数据
for(int j=data.length-1;j>=0;j--){
raf.seek(j*4);
System.out.printf("\t%d",raf.readInt());
}
raf.close();
}

3:数组流     字节数组流:ByteArrayInputStream  ByteArrayOutputStream

字符数组流:BytearrayReader  ByteArrayWriter

 /**
* 数组流 字节数组流(ByteArrayInputStream ByteArrayOutputStream)
* 字符数组流(BytearrayReader ByteArrayWriter)
* */
public static void ByteArrayDemo() throws Exception{
//字节流
ByteArrayOutputStream bos=new ByteArrayOutputStream();
byte [] str="祝你节日快乐".getBytes();
bos.write(str); //写入数据
//读取数据
ByteArrayInputStream bis=new ByteArrayInputStream(bos.toByteArray());
byte[] b=new byte[bos.toByteArray().length];
bis.read(b);
System.out.println("写入的数据为:"+new String(b));
bis.close();
bos.close();
//字符流
CharArrayWriter caw=new CharArrayWriter();
char [] str2="中秋节快乐!".toCharArray();
caw.write(str2);
CharArrayReader car=new CharArrayReader(caw.toCharArray());
char[] c=new char[caw.toCharArray().length];
car.read(c);
System.out.println("读取的数据为:"+new String(c));
car.close();
caw.close();
}

4:数据流   DataInputStream DataOutputStream

能够方便的读取与机器无关的java原始数据,读取时不必纠结去字节大小

/**
* 数据流 DataInputStream DataOutputStream 能够方便的读取与机器无关的java原始数据
* */
public static void DataDemo() throws IOException{
//创建文件 ,用数据流写入不同类型的数据,分别读出不同类型的数据
File f=new File("E:\\DataDemo.txt");
FileOutputStream fos=new FileOutputStream(f);
DataOutputStream dos=new DataOutputStream(fos);
dos.writeInt(23);
dos.writeDouble(22.343435);
dos.writeFloat(55.2343f);
dos.writeBoolean(true);
dos.writeChars("中秋快乐!");
System.out.println("数据读入完毕!");
//读取数据
FileInputStream fis=new FileInputStream(f);
DataInputStream dis=new DataInputStream(fis);
System.out.println(dis.readInt());
System.out.println(dis.readDouble());
System.out.println(dis.readFloat());
System.out.println(dis.readFloat());
System.out.println(dis.readBoolean());
char c='\0';
while((c=dis.readChar())!='\0'){
System.out.print(c);
}
dis.close();
dos.close();
}

Java I/O第二篇 之 (缓冲流 随机流 数组流 数据流)的更多相关文章

  1. Java【第五篇】基本语法之--数组

    数组概述 数组是多个相同类型数据的组合,实现对这些数据的统一管理数组属引用类型,数组型数据是对象(Object),数组中的每个元素相当于该对象的成员变量数组中的元素可以是任何数据类型,包括基本类型和引 ...

  2. Java IO 流-- 字节数组流ByteArrayInPutStream ByteArrayOutPutStream

    字节数组流输于缓冲流,放在jvm内存中,java可以直接操作.我们使用时可以不用关闭,交给GC垃圾回收机制处理. 当然我们为了保持良好习惯和代码一致性也可以加上关闭语句. 当其实我么打开ByteArr ...

  3. [源码]ObjectIOStream 对象流 ByteArrayIOStream 数组流 内存流 ZipOutputStream 压缩流

    1.对象流 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File ...

  4. Java泛型学习---第二篇

    泛型学习第一篇 1.泛型之擦拭法 泛型是一种类似"模板代码"的技术,不同语言的泛型实现方式不一定相同. Java语言的泛型实现方式是擦拭法(Type Erasure). 所谓擦拭法 ...

  5. Java线程入门第二篇

    Java线程通信方法 0.(why)每个线程都有自己的栈空间,我们要线程之间进行交流,合作共赢. 1.synchronized和volatile关键字 a)  看下面的synchronized关键字 ...

  6. java学习(第二篇)语法学习

    1.java标识符 类名.变量名以及方法名都被称为标识符. 关于 Java 标识符,有以下几点需要注意: 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($).或者下划线(_)开始 首字符之 ...

  7. 从零开始搭建Java开发环境第二篇:如何在windows10里安装MySQL

    1 下载安装包 1.1 压缩包 https://dev.mysql.com/downloads/mysql/ [外链图片转存失败(img-oesO8K09-1566652568838)(data:im ...

  8. Java语言程序设计(基础篇) 第七章 一维数组

    第七章 一维数组 7.2 数组的基础知识 1.一旦数组被创建,它的大小是固定的.使用一个数组引用变量,通过下标来访问数组中的元素. 2.数组是用来存储数据的集合,但是,通常我们会发现把数组看作一个存储 ...

  9. Java语言程序设计(基础篇) 第八章 多维数组

    第八章 多维数组 8.2 二维数组的基础知识 二维数组中的元素通过行和列的下标来访问. 8.2.1 声明二维数组变量并创建二维数组 下面是二维数组的语法: 数据类型[][] 数组名; int[][] ...

随机推荐

  1. freemarker截取字符串subString

    转至:http://fengzhijie1103.iteye.com/blog/1142918 freemarker截取字符串其实和JAVA语法是差不多了,也有substring 方法       如 ...

  2. Cocos2d-x——Cocos2d-x 屏幕适配新解 – 兼容与扩展【转载】

    Cocos2d-x 屏幕适配新解 – 兼容与扩展 本文出自[无间落叶](转载请保留出处):http://blog.leafsoar.com/archives/2013/05-13-08.html 在读 ...

  3. URAL 1774 A - Barber of the Army of Mages 最大流

    A - Barber of the Army of MagesTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/v ...

  4. 使用CKEditor编辑器进行文本编辑

    首先下载CKEditor. 下载地址:点击打开链接 将下载完的CKEditor解压而且导入到项目中. 然后在页面引入CKEditor <script type="text/javasc ...

  5. ListView删除选中的多项目

    //ListView删除选中的多项目function DeleteMultSelItems(ListView:TListView):Boolean;var  I: Integer;begin  Res ...

  6. iOS开发——动画篇Swift篇&炫酷弹出菜单

    炫酷弹出菜单   这个是一个第三方按钮菜单组件,原版是使用Objective-C编写的名为AwesomeMenu的组件,地址是:https://github.com/levey/AwesomeMenu ...

  7. Mac OS X 中使用SAP GUI的方法

    下载sap gui for mac 730 解压后 安装之前需要去oracle 官网下载jdk 6 然后运行 安装完成后配置登陆端 新建连接时,只需要配置Advanced 页签:勾选Expert Mo ...

  8. MySQL · BUG分析 · Rename table 死锁分析

    http://mysql.taobao.org/monthly/2016/03/06/ 背景 InnoDB buffer pool中的page管理牵涉到两个链表,一个是lru链表,一个是flush 脏 ...

  9. Xtrabackup每周增量备份脚本程序

    Xtrabackup每周增量备份脚本程序(含附件)   程序描述 本程序是一个对percona xtrabackup使用的脚本,它完成了MySQL每周的备份. 程序结构 此程序包含了4个目录(bin. ...

  10. 打开Excel时提示"您尝试打开的文件**.xls的格式与文件扩展名指定的格式不一致"

    问题描述:     系统安装了WPS时,Analyzer导出excel时候,会提示"您尝试打开的文件**.xls的格式与文件扩展名指定的格式不一致",这是Excel的安全问题,   ...