在Java 中定义了两个字符操作流:Writer、Reader。
public abstract class Writer extends Object implements Appendable, Closeable, Flushable
★ . 在Writer 类里面有一个很重要的内容输出方法:
├ . · 直接输出字符串:
public void write(String str) throws IOException├ . · 输出字符数组:
public void write(char[] cbuf) throws IOException
★ . Writer 是一个抽象类,用其子类来实例化 .
如果现在要操作的是文件,则可以使用FileWriter 类完成。以下是构造方法 :
① . public FileWriter(File file) throws IOException② . public FileWriter(File file,boolean append) throws IOException
③ . public FileWriter(String fileName) throws IOException
④ . public FileWriter(String fileName, boolean append) throws IOException
eg : 文件字符输出流范例 :
package example;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
/**
* 文件的输入流
* @author Miao
*
*/
public class TestDemo {
public static void main(String[] args) throws Exception {
String msg = "好好学习,天天向上.";
File destFile = new File("e:\\msg\\msg.txt");
if(!destFile.getParentFile().exists()) {
destFile.getParentFile().mkdirs();
}
Writer writer = new FileWriter(destFile);
writer.write(msg);
writer.flush();
writer.close();
}
}
▲ . 上面的示例需要注意是: 如果在使用字符输出流操作时,没有关闭,那么有可能会造成输出数据的丢失。
字符流它在操作的过程之中会使用到缓冲区,而在关闭时会强制性的清空缓冲区,所以内容才可以输出,而如果没有关闭,那么缓冲区的内容不会被强制刷新,所以的内容就不完整,如果现在用户开发的输出流的确不能够关闭,那么就需用flush()方法强制刷新缓冲区。
===============================================================================================================================
下面来学习一下字符输入流:Reader .
public abstract class Reader extends Object implements Readable, Closeable
★ . 在Reader 类之中也提供了read()方法。
├ . · 读取单个字符
public int read() throws IOException
├ . · 将字符读入数组
public int read(char[] cbuf) throws IOException
★ . Reader也是一个抽象类 . 如果要想通过文件读取数据,则可以使用FileReader 子类实例化 .
FileReader 类提供了如下的构造:
① . public FileReader(File file) throws FileNotFoundException
② . public FileReader(String fileName) throws FileNotFoundException
eg : 文件字符输入流范例 :
package example;
import java.io.File;
import java.io.FileReader;
import java.io.Reader;
/**
* 文件的输入流
* @author Miao
*
*/
public class TestDemo {
public static void main(String[] args) throws Exception {
File srcFile = new File("e:\\msg\\msg.txt");
if(srcFile.exists()) {
Reader reader = new FileReader(srcFile);
char buf[] = new char[1024];
int len = 0;
while((len=reader.read(buf)) != -1) {
System.out.println(new String(buf,0,len));
}
reader.close();
}
}
}
★ . 字符数据最重要的特点在于中文操作的支持上,也就是说如果现在要操作的是中文数据,那么肯定使用的是字符流。