java IO流之字符流 v_1.0.0
来源:互联网 发布:mobi域名注册 编辑:程序博客网 时间:2024/06/15 02:38
说明:本文是基础知识,供入门者参考。
字符流:读取的是字符。分为输入流和输出流。
Reader:字符输入流,是一个抽象类。是所有字符输入流的超类。
Writer:字符输出流,是一个抽象类。是所有字符输出流的超类。
1.Reader 之 FileReader
常用方法:
int read()
读取单个字符。返回作为整数读取的字符,范围在 0 到 65535 之间 ( 0x00-0xffff),如果已到达流的末尾,则返回 -1。
int read(char[] cbuf)
将字符读入数组。返回读取的字符数,如果已到达流的末尾,则返回 -1。
int read(char[] cbuf, int off, int len)
将字符读入数组的某一部分。返回读取的字符数,如果已到达流的末尾,则返回 -1
long skip(long n)
跳过字符。
void close()
关闭该流并释放与之关联的所有资源。
@Test public void testReader() throws IOException { //hello.txt中存储的是abcdefg //构造方法 //FileReader(File file) //FileReader(String name) FileReader reader = new FileReader("D:\\hello.txt"); System.out.println("---------1--------"); while(true) { //一次读取一个字符 int c = reader.read(); if(c== -1) { break; } System.out.println(c); } reader.close(); //运行结果 /* ---------1-------- 97 98 99 100 101 102 103 */ System.out.println("---------2--------"); FileReader reader1 = new FileReader("D:\\hello.txt"); while(true) { //一次读取多个字符并将读取到的字符放入一个字符数组中。 char[] chars = new char[10]; int len = reader1.read(chars); if(len == -1) { break; } System.out.println(len); System.out.println(Arrays.toString(chars)); } reader1.close(); //运行结果 /* ---------2-------- 7 [a, b, c, d, e, f, g, */ System.out.println("---------3--------"); FileReader reader2 = new FileReader("D:\\hello.txt"); while(true) { //一次读取多个字符并将读取到的字符放入一个字符数组中。 char[] chars = new char[10]; int len = reader2.read(chars, 2, 8); if(len == -1) { break; } System.out.println(len); System.out.println(Arrays.toString(chars)); } reader2.close(); //运行结果 /* ---------3-------- 7 [ , ,a, b, c, d, e, f, g, ] */ System.out.println("---------4--------"); FileReader reader3 = new FileReader("D:\\hello.txt"); while(true) { char[] chars = new char[3]; int len = reader3.read(chars); if(len == -1) { break; } reader3.skip(2); System.out.println(Arrays.toString(chars)); System.out.println(len); } reader3.close(); //运行结果 /* ---------4-------- [a, b, c] 3 [f, g, ] 2 */ }
2.Writer 之 FileWriter
常用方法:
Writer append(char c)
将指定字符添加到此 writer。
void write(int c)
写入单个字符。要写入的字符包含在给定整数值的 16 个低位中,即0~65535之间。
void write(char[] cbuf)
写入字符数组。
void write(char[] cbuf, int off, int len)
写入字符数组的某一部分。
void write(String str)
写入字符串。
void write(String str, int off, int len)
写入字符串的某一部分。
void close()
关闭此流,但要先刷新它。
void flush()
刷新该流的缓冲。
@Test public void testWriter() throws IOException { FileWriter out = new FileWriter("D:\\helloworld.txt",true); char c = 'a'; //以下两个方法的效果是相同的。都可以写出一个字符。 out.append(c);//写出 a out.write(c);//写出 a //写出一个字符数组 char[] chars = {'a','b','c','d'}; out.write('-');//写出 - out.write(chars);//写出 abcd //写出一个字符数组的一部分 out.write('-');//写出 - out.write(chars, 2, 2);//写出 cd //写出一个字符串 String str = "abcd"; out.write('-'); //写出 - out.write(str); //写出 abcd //写出一个字符串的一部分 out.write('-'); //写出 - out.write(str,2,2); //写出 cd out.close(); }
3.BufferedReader 字符缓冲输入流
构造方法:
BufferedReader(Reader reader)BufferedReader(Reader reader, int size) size缓冲区大小
常用方法:
void close()
关闭该流并释放与之关联的所有资源。
int read()
读取单个字符。
int read(char[] cbuf, int off, int len)
将字符读入数组的某一部分。
long skip(long n)
跳过字符。
以上方法与前面一样,在此不重复了。
String readLine()
读取一个文本行。通过下列字符之一即可认为某行已终止:换行 (‘\n’)、回车 (‘\r’) 或回车后直接跟着换行。
返回包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null。
@Test public void testBufferedReader() throws IOException { FileReader reader = new FileReader("D:\\helloworld.txt"); BufferedReader buffR = new BufferedReader(reader); while(true) { String str = buffR.readLine();//读到末尾,则返回null. if(str == null) { break; } System.out.println(str); } buffR.close(); }
4.BufferedWriter 字符缓冲流之输出流
构造方法:
BufferedWriter(Writer out) 创建一个使用默认大小输出缓冲区的缓冲字符输出流。BufferedWriter(Writer out, int sz) 创建一个使用给定大小输出缓冲区的新缓冲字符输出流。
常用方法:
void close()
关闭此流,但要先刷新它。
void flush()
刷新该流的缓冲。
void write(char[] cbuf, int off, int len)
写入字符数组的某一部分。
void write(int c)
写入单个字符。
void write(String s, int off, int len)
写入字符串的某一部分。
//以上方法参考前面。
void newLine()
写入一个行分隔符。
@Test public void testBufferedWriter() throws IOException { FileWriter writer = new FileWriter("D:\\hello.txt",true); BufferedWriter buffW = new BufferedWriter(writer); String s1 = "ab"; buffW.write(s1); buffW.newLine();//起一个换行的作用。 buffW.write(s1); buffW.close(); }
- java IO流之字符流 v_1.0.0
- java之IO流-File v_1.0.0
- java数组之排序 v_1.0.0
- java之String v_1.0.1
- Java IO之字符流
- Java IO之字符流
- java笔记 IO流之字符流
- Java基础--IO流之字符流
- java基础之字符流(IO流)
- java基础 之io流字符流
- Java之IO流---字符流
- IO流之字符流(JAVA)
- Java IO 流之 字符流
- java IO流 之 字符流
- Java基础17-IO之字符流
- 40、Java IO之字符流
- 跟着老毕学Java之IO字符流
- java学习之路---IO----字符流
- asp.net 程序异常捕获全局处理,生成错误日志
- CCF 网络延时 树的直径
- 基于Hadoop的数据仓库Hive 学习指南
- vm虚拟机的windows安装oracle然后用plsqldev连接并操作虚拟机的oracle
- zoj 2112(主席树套树状数组+优化)
- java IO流之字符流 v_1.0.0
- A
- GDB调试程序
- CentOS 使用httpd 配置局域网 yum源
- 研究生手册彭明辉教授
- 多步 OLE DB 操作产生错误 解决办法
- mybatis中的#和$的区别
- 第一次机房收费系统—登录窗体
- velocity(vm)模板引擎学习介绍及语法