I/O字符流
来源:互联网 发布:js正则表达式可以为空 编辑:程序博客网 时间:2024/05/17 22:33
构造方法:
FileWriter(File file)
FileWriter(String fileName)
FileReader(File file)
FileReader(String fileName)
写数据方法:
一次写一个字符 write(int c)
一次写一个字符数组write(char[] cbuf)
一次写一个字符数组的一部分write(char[] cbuf, int off,int len)
一次写一个字符串write(String str)
一次写一个字符串的一部分write(String str,int off,int len)
字符输入流
字符输入流操作步骤:
A:创建字符输入流对象
FileReader fr = new FileReader(“a.txt”);
B:读取数据并显示在控制台
a:一次读取一个字符
一次读取一个字符
int ch;
while ((ch = fr.read()) != -1) {
System.out.print((char) ch);
}
b:一次读取一个字符数组
char[] chs = new char[1024];
int len;
while ((len = fr.read(chs)) != -1) {
System.out.print(new String(chs, 0, len));
}
C:释放资源
fr.close();
代码演示:
使用字符流 复制文件:
package com.thz_04;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class CopyFile { public static void main(String[] args) throws IOException { /** * 1.封装数据源和目的地 * 2.一次读写一个字符或者一次读写一个字符数组 * 3.关流 */ //1.封装数据源和目的地 FileReader fr = new FileReader("InputStreamReaderDemo.java"); FileWriter fw = new FileWriter("d.java"); //2.1一次读写一个字符 /*int ch; while ((ch=fr.read())!=-1) { fw.write(ch);//一次写一个字符 fw.flush();//每写一次刷新缓冲区 }*/ //2.2一次读写一个字符数组 char[] chs = new char[1024]; int len; while ((len=fr.read(chs))!=-1) { fw.write(chs, 0, len); fw.flush(); } //3.关流 fw.close(); fr.close(); }}
注意:
我们使用字符流复制文件的时候,是什么文件都可以复制吗??
答:不是。使用字符流复制文件对文件是有一定的要求的。
什么要求呢?凡是使用记事本打开你肉眼可以看懂的文件
都可以使用字符流进行复制,如果看不懂就不可以使用。
具体原因:像复制MP3或者一些视频文件的时候,如果他的字节个数不是偶数的话,就会造成文件的缺损,
因为一个字符等于两个字节
高效流:
BufferedReader:字符缓冲输入流
构造:BufferedReader(Reader in)
特殊方法:public String readLine():包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 nullBufferedWriter:字符缓冲输出流
构造:BufferedWriter(Writer out)
特殊方法:public void newLine():会根据系统来确定写入不同的换行符
代码演示:
复制文本文件:
基本字符流一次读写一个字符
基本字符流一次读写一个字符数组
高效字符流一次读写一个字符
高效字符流一次读写一个字符数组
package com.thz_07;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class Test { public static void main(String[] args) throws IOException { method();//基本字符流一次读写一个字符 method2();//基本字符流一次读写一个字符数组 method3();//高效字符流一次读写一个字符 method4();//高效字符流一次读写一个字符数组 } private static void method4() throws IOException { //高效字符流一次读写一个字符数组 BufferedReader br = new BufferedReader(new FileReader("a.txt")); BufferedWriter bw = new BufferedWriter(new FileWriter("j.txt")); //一次读写一个字符数组 char[] chs = new char[1024]; int len; while ((len = br.read(chs))!=-1) { bw.write(chs, 0, len); bw.flush(); } //释放资源 bw.close(); br.close(); } private static void method3() throws IOException { //高效字符流一次读写一个字符 BufferedReader br = new BufferedReader(new FileReader("a.txt")); BufferedWriter bw = new BufferedWriter(new FileWriter("j.txt")); //一次读写一个字符 int ch; while ((ch=br.read())!=-1) { bw.write(ch); bw.flush(); } //关流 bw.close(); br.close(); } private static void method2() throws IOException { //基本字符流一次读写一个字符数组 FileReader fr = new FileReader("a.txt"); FileWriter fw = new FileWriter("j.txt"); //一次读写一个字节数组 char[] chs = new char[1024]; int len; while ((len = fr.read(chs))!=-1) { fw.write(chs, 0, len); fw.flush(); } //关流 fw.close(); fr.close(); } private static void method() throws IOException { //基本字符流一次读写一个字符 FileReader fr = new FileReader("a.txt"); FileWriter fw = new FileWriter("j.txt"); //一次读取一个字符,返回的是该字符对应的int值/* System.out.println((char)fr.read()); System.out.println((char)fr.read()); System.out.println((char)fr.read()); System.out.println((char)fr.read()); System.out.println((char)fr.read()); */ int ch; while ((ch=fr.read())!=-1) { //System.out.println((char)ch); fw.write(ch); fw.flush(); } //释放资源 fr.close(); fw.close(); }}
- I/O字符流
- 文件 I/O字符流
- java I/O流之字符流
- java(I/O流四---字符流)
- I/O流(字符流)
- java编程 I/O--字符流
- JavaSE I/O 字符流 Reader/Writer
- java(27) - I/O字符流
- 黑马程序员-JAVA-I/O-字符流
- 二进制、字符I/O、格式化I/O
- Java-Java I/O流解读之基于字符的I / O和字符流
- [疯狂Java]I/O:流模型(I/O流、字节/字符流、节点/处理流)
- I/O操作,字节流,字符流,字符集编码
- Java I/O(一)--字节流,字符流
- I/O字节流和字符流的使用
- Java-I/O操作之字符流、其他常用流
- [疯狂Java]I/O:字节流、字符流
- Java I/O(一)字节流与字符流
- BurnCtrl刻录控制系统
- 设计模式:对象创建(原型,单例,简单工厂,工厂方法,抽象工厂,生成器)
- 单纯形模板
- 尚硅谷自定义View学习笔记-小白到实战
- 字符串替换
- I/O字符流
- Huffman树的创建
- faster rcnn论文
- Docker命令介绍
- 如何查找Oracle Data Integrator和Oracle GoldenGate的支持列表
- MyBatis传入多个参数的问题
- sql
- ABAP中的系统变量SY-INDEX与SY-TABIX
- 5-70 情人节 (15分)