java中字符流的总结
来源:互联网 发布:交换机端口镜像命令 编辑:程序博客网 时间:2024/05/22 05:08
在程序中一个字符等于两个字节,那么Java提供了Reader和Writer两个专门操作字符流的类
1.字符输出流Writer
Writer本身是一个字符流的输出类,此类的定义如下:
public abstract class Writer extends Object implements Appendable,Closeable,Flushable
范例:向文件中写入数据
<span style="font-size:18px;">import java.io.File;import java.io.FileWriter;import java.io.Writer;public class WriterDemo01 {public static void main(String[] args) throws Exception{//1.使用File类找到一个文件File f = new File("d:" + File.separator + "test.txt");//2.通过子类实例化父类对象Writer out = null;out = new FileWriter(f);//3.进行写操作String str = "Hello Tomcmd!";out.write(str);//4.关闭输出流out.close();}}</span>使用FileWriter追加文件的内容
public FileWriter(File file,boolean append) throws IOException{}
<span style="font-size:18px;">import java.io.File;import java.io.FileWriter;import java.io.Writer;public class WriterDemo02 {public static void main(String[] args) throws Exception{//1.使用File类找到一个文件File f = new File("d:" + File.separator + "test.txt");//2.通过子类实例化父类对象Writer out = null;out = new FileWriter(f,true);//3.进行写操作String str = "\r\nCHENMD";out.write(str);//4.关闭输出流out.close();}}</span>2.字符输入流
Reader是使用字符的方式从文件中取出数据
public abstract class Reader extends Object implements Readable,Closeable
<span style="font-size:18px;">import java.io.File;import java.io.FileReader;import java.io.Reader;public class ReaderDemo01 {public static void main(String[] args) throws Exception{//1.使用File类找到一个文件File f = new File("d:" + File.separator + "test.txt");//2.通过子类实例化父类对象Reader reader = null;reader = new FileReader(f);//3.进行读操作char[] c = new char[1024];int len = reader.read(c);//4.关闭输入流reader.close();System.out.println("内容为:"+new String(c,0,len));}}</span>循环读取:
<span style="font-size:18px;">import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.Reader;import java.io.Writer;public class ReaderDemo02 {public static void main(String[] args) throws Exception{//1.使用File类找到一个文件File f = new File("d:" + File.separator + "test.txt");//2.通过子类实例化父类对象Reader reader = null;reader = new FileReader(f);//3.进行读操作int len = 0;//记录读取的数据个数char[] c = new char[1024];//所有的内容读到此数组中int temp = 0 ;//接收读到的每一个内容while((temp = reader.read()) != -1){c[len] = (char)temp;len++;}//4.关闭输入流reader.close();System.out.println("内容为:"+new String(c,0,len));}}</span>3.字节流与字符流的区别
字节流在操作时本身不会用到缓冲区,是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,下面看两种区别:
<span style="font-size:18px;">import java.io.File;import java.io.FileOutputStream;import java.io.OutputStream;public class OutputStreamDemo{public static void main(String[] args) throws Exception{File f = new File("d:" + File.separator + "test.txt");OutputStream out = null;out = new FileOutputStream(f);String str = "Hello World!!!";byte[] b = str.getBytes();out.write(b);}}</span>输出结果:
文件内容变为:Hello World!!!
此时没有关闭字节流操作,但是文件中依然存在了输出的内容,证明字节流是操作文件本身的,下面是用字符流完成,观察效果:
<span style="font-size:18px;">import java.io.File;import java.io.FileWriter;import java.io.Writer;public class WriterDemo03 {public static void main(String[] args) throws Exception{//1.使用File类找到一个文件File f = new File("d:" + File.separator + "test.txt");//2.通过子类实例化父类对象Writer out = null;out = new FileWriter(f,true);//3.进行写操作String str = "\r\nCHENMD";out.write(str);//4.关闭输出流//out.close();}}</span>程序运行结果:
文件内容为:Hello World!!!
也就是说追加的内容并没有加进去,这是因为字符流操作时使用了缓冲区,而在关闭字符流时会强制性地将缓冲区中的内容进行输出,但是如果程序没有关闭,则缓冲区的内容是无法输出的
所以:字符流使用了缓冲区,而字节流没有使用缓冲区
如果想在不关闭时也将字符流的内容全部输出,可以使用Writer类中的flush()方法完成
4.使用字节流好还是字符流好
字符流,显然是专用来写入字符的字节流,可以写文本文本文件也可以写其他文件如电影文件 ,在开发中,字节流使用较为广泛
- java中字符流的总结
- java中字节流和字符流的总结
- Java中字符编码的问题总结
- java 中IO流总结之二 :字符流总结
- 关于Java中字符编码的一点总结
- [原]关于Java中字符编码的一点总结
- JAVA中关于IO流中的字符流和字节流的个人总结
- 字符流中第一个不重复的字符 java
- Java中面向字符的输入流
- java中输出转义字符总结
- java中字符跟字节转换 总结
- Java中字符流
- Java 字节流与字符流的总结和理解
- Java IO字符流写文件的总结
- java入门教程-8.2Java中面向字符的输入流
- 从XML中获取字符的总结
- java下的字符编码转换总结
- JAVA中读取文件(二进制,字符)内容的方法总结
- [LeetCode]Length of Last Word&Plus One
- Android之建立简单的用户界面
- springboot 支持 jsp 的写法(分别使用 maven 和 gradle 作为构建工具)
- Nigix搭建安装快速指南
- Objective-c:属性
- java中字符流的总结
- java中ThreadLocal类的使用
- vs2005 以ADO方式连接mysql
- 10K负温度系数热敏电阻(NTC)温度与阻值对应关系表
- 使用静态数组实现列表 C++
- 内购验证
- LeetCode(242)Valid Anagram
- Qt显示界面旋转
- iOS提交后申请加急审核