Java第三十二天,IO操作(续集),读写缓冲区的使用
缓冲区出现原因:
Java对IO的读写都是经过中间途经——JVM虚拟机进行管理的,JVM调用OS操作系统继续完成IO操作。如此一来,整个过程耗费了不小的资源,为了尽量减少这样重复的周期性操作,出现了缓冲区,可以有效的提高系统的性能
一、IO缓冲区类
BufferedInputStream ===> 字节输入缓冲流
BufferedOutputStream ===> 字节输出缓冲流
BufferedReader ===> 字符输入缓冲流
BufferedWriter ===> 字符输出缓冲流
二、BufferedInputStream
1.构造方法
BufferedOutputStream(OutputStream out)
BufferedOutputStream(OutputStream out, int size)
2.常用方法
void flush() ===> 刷新缓冲输出流
void write(byte[] b, int off, int len) ===> 从指定的字节数组写入 len个字节,从偏移 off开始到缓冲的输出流
void write(int b) ===> 将指定的字节写入缓冲的输出流
3.使用方法
import java.io.*;
public class MyBuffer {
public static void main(String[] args) throws IOException {
BufferedOutputStream file = new BufferedOutputStream(new FileOutputStream("F:\\data.txt"));
file.write("这是我写入的数据".getBytes());
file.flush();
}
}
二、BufferedInputStream
1.构造方法
BufferedInputStream(InputStream in)
BufferedInputStream(InputStream in, int size)
2.常用方法
int available() ===> 返回从该输入流中可以读取(或跳过)的字节数的估计值
void close() ===> 关闭此输入流并释放与流相关联的任何系统资源。
void mark(int readlimit)
boolean marksupported() ===> 测试这个输入流是否支持 mark和reset方法
int read()
void reset()
long skip(long n)
3.使用方法
import java.io.*;
public class MyBuffer {
public static void main(String[] args) throws IOException {
BufferedInputStream file = new BufferedInputStream(new FileInputStream("F:\\data.txt"));
int nums = file.available();
byte[] bytes = new byte[nums];
file.read(bytes);
file.close();
System.out.printf(new String(bytes));
}
}
三、BufferedWriter
1.构造方法
BufferedWriter(Writer out)
BufferedWriter(Writer out, int sz)
2.常用方法
void close() ===> 关闭流,先刷新
void flush() ===> 刷新流
void newLine() ===> 写一行行分隔符
void write(char[]cbuf,int off,int len)写入字符数组的一部分
void write(intc)写一个字符
void write(Strings,int off,int len)写一个字符串的一部分
3.使用方法
import java.io.*;
public class MyBuffer {
public static void main(String[] args) throws IOException {
BufferedWriter file = new BufferedWriter(new FileWriter("F:\\info.txt"));
file.write("欢迎来到英雄联盟");
file.flush();
file.close();
}
}
四、BufferedReader
1.构造方法
BufferedReader(Reader in)
BufferedReader(Reader in, int sz)
2.常用方法
void close() ===> 关闭流并释放与之相关联的任何系统资源
Stream<string> lines() ===> 返回一个Stream,其元素是从这个BufferedReader读取的行
void mark(int readAheadLimit) ===> 标记流中的当前位置
boolean marksupported() ===> 告诉这个流是否支持mark()操作
int read() ===> 读一个字符
int read(char[]cbuf,int off,int len) ===> 将字符读入数组的一部分
string readLine() ===> 读一行文字
boolean ready() ===> 告诉这个流是否准备好被读取
void reset() ===> 将流重置为最近的标记
long skip(long n) ===> 跳过字符
3.使用方法
import java.io.*;
public class MyBuffer {
public static void main(String[] args) throws IOException {
BufferedReader file = new BufferedReader(new FileReader("F:\\info.txt"));
String info;
while ((info = file.readLine()) != null){
System.out.println(info);
}
}
}
Java第三十二天,IO操作(续集),读写缓冲区的使用的更多相关文章
- Java中的IO操作和缓冲区
目录 Java中的IO操作和缓冲区 一.简述 二.IO流的介绍 什么是流 输入输出流的作用范围 三.Java中的字节流和字符流 字节流 字符流 二者的联系 1.InputStreamReader 2. ...
- java中的IO操作
IO流是用来处理设备之间的数据传输,Java对数据的操作是通过流的方式进行,而操作流的对象都封装到java.io包中.根据操作数据的种类可以把IO流分为字节流(InputStream,OutputSt ...
- java中的IO操作总结
一.InputStream重用技巧(利用ByteArrayOutputStream) 对同一个InputStream对象进行使用多次. 比如,客户端从服务器获取数据 ,利用HttpURLConnect ...
- 【转】Java中的IO操作
在使用io操作之前,先看一下java中的文件类File如何使用.File包括文件和目录,对文件和目录的操作是新建目录mkdir,新建文件createNewFile,删除文件和目录delete,以及其他 ...
- 第12讲-Java中的IO操作及对象的序列化与反序列化
1.知识点 1.1.课程回顾 1.2.本章重点 1.2.1 io操作 1.2.2 对象的序列化与反序列化 2.具体内容 2.1.Java IO 2.1.1.什么是IO IO其实就是输入.输出 I ...
- 16 IO操作文件读写
IO的分类 第一种分法: 1.输入流 2.输出流 第二种分法: 1.字节流 2.字符流 第三种分法: 1.节点流 2.处理流 I/O当中的核心类: InputStream <--------F ...
- java学习系列(一)Java中的IO操作
Java的IO流是实现输入/输出的基础,它可以方便地实现数据的输入\输出操作,在Java中把不同的输入\输出源抽象为"流",通过流的方式允许Java程序使用相同的方式来访问不同的输 ...
- Java学习笔记——IO操作之对象序列化及反序列化
对象序列化的概念 对象序列化使得一个程序可以把一个完整的对象写到一个字节流里面:其逆过程则是从一个字节流里面读出一个事先存储在里面的完整的对象,称为对象的反序列化. 将一个对象保存到永久存储设备上称为 ...
- Python中的文件IO操作(读写文件、追加文件)
Python中文件的读写包含三个步骤:打开文件,读/写文件,关闭文件. 文件打开之后必须关闭,因为在磁盘上读写文件的功能是由操作系统提供的,文件作为对象,被打开后会占用操作系统的资源,而操作系统在同一 ...
- Java学习笔记——IO操作之以图片地址下载图片
以图片地址下载图片 读取给定图片文件的内容,用FileInputStream public static byte[] mReaderPicture(String filePath) { byte[] ...
随机推荐
- synchronized实现原理及其优化-(自旋锁,偏向锁,轻量锁,重量锁)
1.synchronized概述: synchronized修饰的方法或代码块相当于并发中的临界区,即在同一时刻jvm只允许一个线程进入执行.synchronized是通过锁机制实现同一时刻只允许一个 ...
- C语言格式化输出
1.%d 十进制有符号整数int. 2.%u 十进制无符号整数. 3.%ld 输出long整数 . 4.%s 字符串. 5.%c 单个字符. 6.%p 指针的值. 7.%e 指数形式的浮点数. 8.% ...
- niginx:duplicate MIME type "text/html" in nginx.conf 错误(转载)
把nginx升级到最新以后,发现用原来的配置启动的时候会提示: duplicate MIME type "text/html" in /usr/local/nginx/conf/n ...
- 在Servlet端获取html页面选中的checkbox值,request获取页面checkbox(复选框)值
html端代码: 选项框: <input type="checkbox" name="crowd" value="选项一">选项 ...
- 关于Resouces.resx 在WPF中{x:Static}不显示内容只显示字段的问题解决办法
问题现象:<object property="{x:Static prefix:typeName.staticMemberName}" .../> 界面中只显示资源引用 ...
- JAVA-阿里云短信服务
1.引入相关依赖 <!--lombok--> <dependency> <groupId>org.projectlombok</groupId> < ...
- File判断功能(新手)
//导入的一个类.import java.io.File;/* File判断功能*///创建的一个类.public class zylx3 { //公共静态的主方法. public static vo ...
- 最长公共前缀(py)
编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow" ...
- 《前端之路》- TypeScript (三) ES5 中实现继承、类以及原理
目录 一.先讲讲 ES5 中构造函数(类)静态方法和多态 1-1 JS 中原型以及原型链 例子一 1-2 JS 中原型以及原型链中,我们常见的 constructor.prototype.**prot ...
- Model、Form、ModelForm的比较
Model.Form.ModelForm 本节内容: 1:Model 2:Form 3:Model Form 1 2 3 http://www.cnblogs.com/wupeiqi/articles ...