Java IO(四--字符流基本使用

在上一节,介绍了字节流的基本使用,本节介绍一下字符流的使用

Reader:

public abstract class Reader implements Readable, Closeable {
    protected Object lock;
    private static final int maxSkipBufferSize = 8192;
    private char[] skipBuffer = null;

    protected Reader() {
        this.lock = this;
    }

    protected Reader(Object var1) { }	

    public int read(CharBuffer var1) throws IOException { }	//试图将文件中的字符读入指定的字符缓冲区

    public int read() throws IOException { }	//从文件中读取单个字符

    public int read(char[] var1) throws IOException { }	//从文件中读取字符到var1

    public abstract int read(char[] var1, int var2, int var3) throws IOException;	//将文件中的字符读入cbuf数组,从off位置开始,读取len个字符

    public long skip(long var1) throws IOException { }	//跳过var1个字符

    public boolean ready() throws IOException { }	//判断是否准备读取此流

    public boolean markSupported() { }	//判断此流是否支持mark()操作

    public void mark(int var1) throws IOException { }	//标记流中的当前位置

    public void reset() throws IOException { }	//重置

    public abstract void close() throws IOException;
}

我们可以发现Reader和InputStream的方法相差不大,是定义字符输入流的抽象类

Writer:

public abstract class Writer implements Appendable, Closeable, Flushable {
    private char[] writeBuffer;
    private static final int WRITE_BUFFER_SIZE = 1024;
    protected Object lock;

    protected Writer() {
        this.lock = this;
    }

    protected Writer(Object var1) { }

    public void write(int var1) throws IOException { }	//写入单个字符到文件中

    public void write(char[] var1) throws IOException { }	//将char[] var1中的内容写入文件

    public abstract void write(char[] var1, int off, int len) throws IOException;	//将字符数组var1中从off开始的len个字节写入文件

    public void write(String var1) throws IOException { }	//将字符串var1写入到文件中

    public void write(String var1, int off, int len) throws IOException { }	//写入var1从off位置开始的len个字符到文件中

    public Writer append(CharSequence var1) throws IOException { }	//将制定字符序列添加到此writer

    public Writer append(CharSequence var1, int var2, int var3) throws IOException { }	//将指定字符序列的子序列添加到此writer

    public Writer append(char var1) throws IOException { }	//将制定字符添加到此writer

    public abstract void flush() throws IOException;	//强制提交,刷新该流的缓冲

    public abstract void close() throws IOException;	//关闭
}

FileReader、FileWriter:

public static void main(String[] args) throws IOException {
	String pathName = "D:" + File.separator + "a.txt";
	FileWriter fileWriter = new FileWriter(pathName);
	fileWriter.write("abcabcabcabcabcabc".toCharArray());
	fileWriter.close();
	FileReader fileReader = new FileReader(pathName);
	char[] chars = new char[1024];
	fileReader.read(chars);
	for (char c : chars) {
		System.out.print(c);
	}
	fileReader.close();
}

BufferedReader、BufferedWriter:

public static void main(String[] args) throws IOException {
	String pathName = "D:" + File.separator + "a.txt";
	BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(pathName));
	bufferedWriter.write("abcabcabcabcabcabc".toCharArray());
	bufferedWriter.newLine(); //跳到下一行
	bufferedWriter.write("next line".toCharArray());
	bufferedWriter.close();
	BufferedReader bufferedReader = new BufferedReader(new FileReader(pathName));
	char[] chars = new char[1024];
	bufferedReader.read(chars);
	for (char c : chars) {
		System.out.print(c);
	}
	System.out.println(bufferedReader.readLine());  //读取一行数据
	bufferedReader.close();
}

新增了newLine()和readLine()

至于CharArrayReader和CharArrayWrite、PipedReader和PipedWriter等和InputStream、OutputStream中子类使用都是相似的,自行类比

字符流和字节流最大的区别:

  字节流在操作时本身不会用到缓冲区,是对文件本身直接操作的

  字符流操作时使用了缓冲区,通过缓冲区再操作文件,要使用flush()或者close()

  如果没有的话,缓冲区中的内容是无法输出的

原文地址:https://www.cnblogs.com/huigelaile/p/11051837.html

时间: 2024-08-05 19:24:16

Java IO(四--字符流基本使用的相关文章

[学习笔记]Java IO之字符流

概述 字符流是专门用于处理文本文件的流,其中包括了文本编码相关转换工作. 字符流只可以处理文本字符数据. 每个字符流都包括一种编码方式,可以使用系统默认,也可以自行设定. 编码 1. 编码表 生活中语言文字和计算机中对应的数据表 2. 常见编码表 ASCII:包括字母和常见符号,1字节编码,首位为0. ISO8859-1:包括拉丁字母,1字节编码,首位为1. GB2312:简体中文码表,包括6~7千汉子及符号,2字节编码,2个字节首位均为1. GBK:中文码表,包括GB2312全部编码,约2万个

Java IO之字符流

1.         字符流 在程序中一个字符等于两个字节,Java为我们提供了Reader和Writer两个专门操作字符流的类 1)        字符输出流:Writer Writer是一个字符流,它是一个抽象类,所以要使用它,也必须通过其子类来实例化它后才能使用它. Writer类的常用方法 方法名称 描述 public abstract void close() throws IOException 关闭输出流 public void write(String str) throws I

IO(四)字符流练习

public class CharStreamDemo { /* 1.Writer extends Object implements Appendable,Closeable,Flushable close(); 关闭流 write(String str); 将字符串输出 write(char[] c); 将字符数组输出 flush(); 强制清空缓存 2.Reader extends Object implements Readable,Closeable; close(); 关闭输出流 r

JAVA之IO技术-字符流对象Writer的子类对象FileWriter的使用

  package ioTest.io1; import java.io.File; import java.io.FileWriter; /* * IO技术,按照操作数据的方式分类如下: * 字节流和字符流 * 字节流的两个基类: * InputStream,OutputStream * 字节流的两个基类: * Reader,Writer * 思考一个问题:为什么有了字节流还要出现字符流? * * 先学习字符流的特点. * * 既然IO是操作数据的,那么数据最常见的体现形式 文件 * 需求:

Java IO之处理流(缓冲流、转换流)

一.处理流: 增强功能,提供性能,在节点流之上. 二.节点流与处理流的关系 节点流(字节流.字符流)处于IO操作的第一线,所有操作必须通过它们进行: 处理流可以对其他流进行处理(提高效率或操作灵活性). 三.缓冲流 1.字节缓冲流 BufferedInputStream BufferedOutputStream package IOBuffer; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; im

Java IO结构各种流详解

花了两天时间研究了一下Java IO的流,对于各种流,加深了一下理解 首先看我做的思维导图 文件流 public class FileIO { public static void main(String[] args) throws Exception { File file1 = new File(System.getProperty("user.dir") + "/c.txt"); // 找到第一个文件的File // 找到目标文件路径 File file2

芯学苑:浅析Java字节流和字符流

1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个"流动的方向",通常可以从中读入一个字节序列的对象被称为输入流;能够向其写入一个字节序列的对象被称为输出流. 2. 字节流 Java中的字节流处理的最基本单位为单个字节,它通常用来处理二进制数据.Java中最基本的两个字节流类是InputStream和OutputStream,它们分别代表了组基本的输入字节流和输出字节流.Inpu

java 字节流和字符流转换类InputStreamReader,OutPutStreamReader

import java.io.*; public class BufferDemo { public static void main(String[] args) throws IOException { BufferedReader buf=null; buf=new BufferedReader(new InputStreamReader(System.in)); System.out.print("Please enter a number:"); String str=buf

java 字节流和字符流的区别 转载

转载自:http://blog.csdn.net/cynhafa/article/details/6882061 java 字节流和字符流的区别 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如图12-6所示. 下面以两个写文件的操作为主进行比较,但是在操作时字节流和字符流的操作完成之后都不关闭输出流.范例:使用字节流不关闭执行 Java