Java I/O第二篇 之 (缓冲流 随机流 数组流 数据流)
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第二篇 之 (缓冲流 随机流 数组流 数据流)的更多相关文章
- Java【第五篇】基本语法之--数组
数组概述 数组是多个相同类型数据的组合,实现对这些数据的统一管理数组属引用类型,数组型数据是对象(Object),数组中的每个元素相当于该对象的成员变量数组中的元素可以是任何数据类型,包括基本类型和引 ...
- Java IO 流-- 字节数组流ByteArrayInPutStream ByteArrayOutPutStream
字节数组流输于缓冲流,放在jvm内存中,java可以直接操作.我们使用时可以不用关闭,交给GC垃圾回收机制处理. 当然我们为了保持良好习惯和代码一致性也可以加上关闭语句. 当其实我么打开ByteArr ...
- [源码]ObjectIOStream 对象流 ByteArrayIOStream 数组流 内存流 ZipOutputStream 压缩流
1.对象流 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File ...
- Java泛型学习---第二篇
泛型学习第一篇 1.泛型之擦拭法 泛型是一种类似"模板代码"的技术,不同语言的泛型实现方式不一定相同. Java语言的泛型实现方式是擦拭法(Type Erasure). 所谓擦拭法 ...
- Java线程入门第二篇
Java线程通信方法 0.(why)每个线程都有自己的栈空间,我们要线程之间进行交流,合作共赢. 1.synchronized和volatile关键字 a) 看下面的synchronized关键字 ...
- java学习(第二篇)语法学习
1.java标识符 类名.变量名以及方法名都被称为标识符. 关于 Java 标识符,有以下几点需要注意: 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($).或者下划线(_)开始 首字符之 ...
- 从零开始搭建Java开发环境第二篇:如何在windows10里安装MySQL
1 下载安装包 1.1 压缩包 https://dev.mysql.com/downloads/mysql/ [外链图片转存失败(img-oesO8K09-1566652568838)(data:im ...
- Java语言程序设计(基础篇) 第七章 一维数组
第七章 一维数组 7.2 数组的基础知识 1.一旦数组被创建,它的大小是固定的.使用一个数组引用变量,通过下标来访问数组中的元素. 2.数组是用来存储数据的集合,但是,通常我们会发现把数组看作一个存储 ...
- Java语言程序设计(基础篇) 第八章 多维数组
第八章 多维数组 8.2 二维数组的基础知识 二维数组中的元素通过行和列的下标来访问. 8.2.1 声明二维数组变量并创建二维数组 下面是二维数组的语法: 数据类型[][] 数组名; int[][] ...
随机推荐
- hdu 5745 La Vie en rose DP + bitset优化
http://acm.hdu.edu.cn/showproblem.php?pid=5745 这题好劲爆啊.dp容易想,但是要bitset优化,就想不到了. 先放一个tle的dp.复杂度O(n * m ...
- radio select的 option使用
1 radio的使用 <td id="sex">性别: <input type="radio" name=&quo ...
- 教你50招提升ASP.NET性能(二十六):对于开发人员的数据库性能技巧
Database Performance Tips for Developers对于开发人员的数据库性能技巧 As a developer you may or may not need to go ...
- SAP BW标准模型简介(BW星形模型 BW Star Schema )
标准星型模型是 数据仓库中一种常用的组织信息和数据的多维数据模型.它由中心的一个事实表(Fact Table)和一些围绕它的维度表(Dimensional Table)组成. 事实(Fact)着眼于 ...
- uoj #31. 【UR #2】猪猪侠再战括号序列 贪心
#31. [UR #2]猪猪侠再战括号序列 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/31 Descript ...
- vector<int> v2 = 42; 为何非法
C++ Primer 第四版,第十三章“复制控制” 习题13.2,为何vector<int> v2 = 42; 不能编译? 百度贴吧里的一位楼主给出了答案,本人认为正确,特此引用: 参考链 ...
- Effective C++ Item 29 为”异常安全”而努力是值得的
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 经验:异常安全函数即使发生异常也不会泄漏资源或同意不论什么数据结构败坏.这种函数区分为三种 ...
- Swift常用语法示例代码(一)
此篇文章整理自我以前学习Swift时的一些练习代码,其存在的意义多是可以通过看示例代码更快地回忆Swift的主要语法. 如果你想系统学习Swift或者是Swift的初学者请绕路,感谢Github上Th ...
- Linux堆内存管理深入分析
(上半部) 作者:走位@阿里聚安全 前言 近年来,漏洞挖掘越来越火,各种漏洞挖掘.利用的分析文章层出不穷.从大方向来看,主要有基于栈溢出的漏洞利用和基于堆溢出的漏洞利用两种.国内关于栈溢出的资料相对较 ...
- Jquery Validate根据其他元素的事件来触发单个元素的异步校验
场景:在做一个车辆信息管理模块,而车牌是通过车牌颜色和车牌号码来确定唯一性的,录入车牌信息时需对车牌进行唯一性校验.