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[][] ...
随机推荐
- Long与long的比较
Java中如果使用 == 双等于比较对象,等于比较的是两个对象的内存地址,也就是比较两个对象是否是同一个对象如果比较两个Long对象值是否相等,则不可以使用双等号进行比较,可以采用如下方式:1. 使用 ...
- Unity3D之Mecanim动画系统学习笔记(八):Animator Layers(动画分层)
解决什么问题? 动画分层可以用来解决什么样的问题呢?试想一下如果你要开发一款第三人称的射击游戏,那么肯定是希望身体的动画分为上下两部分,上方根据瞄准的位置和是否射击进行动画播放,下方根据移动播放动画. ...
- HtmlAgilityPack相关网页
//多线程 http://www.cnblogs.com/jiangming/archive/2012/09/11/MultiThreadCallWebbrowser.html //替换Webbrow ...
- Android---App Widget(四)
接收App Widget广播的Intent对象 AppWidgetProvider只是一个便利的类,如果你想要直接接收App Widget广播,你可以实现自己的BroadcastReceiver类或重 ...
- python的一些总结3
好吧 刚刚的2篇文章都很水.. 这篇 也是继续水 在 templates 右键新建 html 文件:如 index.html (输入以下代码) <!DOCTYPE html> <ht ...
- delphi 设置超链接
的属性 的事件 的方法 //1设置链接类型//2获取样式 链接和提示信息 //title是提示信息//HTTPS https://<a href="https://www.baidu ...
- [MODX] 0. Mangement System Overview
In Modex, there are three tabs: Resoources, Elements & Files First: 'Files' is the place where t ...
- mysqlpump 原理
Oracle官方多线程逻辑备份工具 昨天Inside君写到MySQL 5.7.11版本发布,其中最有意义的部分在于官方修复了之前mysqlpump工具一致性备份的问题,使得mysqlpump工具在生产 ...
- focusky 购买指南
升级Focusky动画演示大师 所有版本一次购买,终身使用,无限制作,免费升级.支付方式:支付宝.淘宝.银行转账.支付宝付款:点击表格中的“立即购买“进入购买页面->选择版本.数量,并填写详细的 ...
- java_文件类
例一:创建文件 package java文件类; import java.io.File; import java.io.IOException; public class aasd { public ...