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[] ...
随机推荐
- 读源码 - stagesepx
目录 背景 一.概述 stagesepx 二.源码中优雅的用法 优雅的赋值/返回 递归方法新建多级目录 更简洁的日志输出 格式化输出的另一种姿势 基于生成器读取多个文件 sorted进阶 入参类型限制 ...
- 【译】HTTP/2 为更快速的网站而生
最近在做一个内部的服务对接,使用了Google的gRPC框架,gRPC是基于HTTP/2和protocol buffers实现的,所以额外去了解了一下HTTP/2,找到这这边文章.这篇文章虽然是写于2 ...
- Mol Cell Proteomics. | 用于鉴定新型融合转录本及其在癌细胞中的潜在翻译产物的多功能蛋白质组基因组学工具FusionPro
期刊:Molecular & Cellular Proteomics 发表时间:June 17, 2019 DOI:10.1074/mcp.RA119.001456 分享人:任哲 内容与观点: ...
- shell编程之变量赋值
1.变量赋值: name=lbg 等号前后不能有空格 name="Lebron James" 变量值中有空格要用双引号 echo ${name} 用${}更保险 shopt -s ...
- xheditor图片上传
前端步骤:分为三部,这三部做完之后就能正确显示富文本了 1.下载xheditor文件,并按照如下要求进行引入: <!-- xheditor富文本的文件引入 --> <script t ...
- Python编写“求一元二次方程的解”
#求一元二次方程的解 import math def equation(a,b,c): h=b*b-4*a*c #一元二次方程的解,百度来的 if h>=0: x1=(-b+math.sqrt( ...
- MySQL----DQL(查询数据库表中数据)
##DQL:查询表中的记录 1.语法: select 字段列名 from 表名列表 where 条件列表 group by 分组字段 having 分组之后的条件 order by 排序 lim ...
- Falling Squares
2020-01-08 10:16:37 一.Falling squares 问题描述: 问题求解: 本题其实也是一条经典的区间问题,对于区间问题,往往可以使用map来进行区间的维护操作. class ...
- [模拟]Educational Codeforces Round 2A Extract Numbers
Extract Numbers time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- mysql两表合并,对一列数据进行处理
加班一时爽,一直加班~一直爽~ 欢迎收看http://www.996.icu/ 今天弄了下MySQL中两表合并的并且要处理一列数据,这列数据原来都是小写字母,处理时将这列数据改成驼峰命名的~~ 基本 ...