FileReader 和 FileWriter
一、 FileReader 和 File Writer 介绍
FileReader 和 FileWriter 是字符流,即按照字符来操作 io
二、 FileReader 相关方法
- 构造方法摘要
Constructor and Description |
---|
FileReader(File file) 创建一个新的 FileReader ,给出 File 读取。 |
FileReader(String fileName) 创建一个新的 FileReader ,给定要读取的文件的名称。 |
FileReader(FileDescriptor fd) 创建一个新的 FileReader ,给定 FileDescriptor 读取。 |
- 相关方法摘要
Modifier and Type | Method and Description |
---|---|
int |
read() 每次读取单个字符,返回该字符,如过达到文件末尾返回-1 |
int |
read(char[]) 批量读取多个字符到数组中,返回读取到的字符数,如过达到文件末尾返回-1 |
-
相关API:
- new String(char[]):将char[]转换成String
- new String(char[], off, len):将char[]的指定部分转换成String
-
代码演示:
import org.junit.jupiter.api.Test; import java.io.FileReader; import java.io.IOException; /** * @author * @version 1.0 */ public class FileReader_ { public static void main(String[] args) { } /** * 单个字符读取 */ @Test public void fileReader01(){ String filePath = "e:\\story.txt"; //创建FileReader对象 FileReader fileReader = null; int data = 0; try { fileReader = new FileReader(filePath); //循环读取 while((data = fileReader.read()) != -1){ System.out.print((char)data); } } catch (IOException e) { e.printStackTrace(); }finally { try { if(fileReader != null) fileReader.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 字符数组读取 */ @Test public void fileReader02(){ String filePath = "e:\\story.txt"; FileReader fileReader = null; int readLen = 0; char[] buf = new char[8]; try { //创建FileReader对象 fileReader = new FileReader(filePath); //循环读取 while((readLen = fileReader.read(buf)) != -1){ System.out.print((new String(buf, 0, readLen))); } } catch (IOException e) { e.printStackTrace(); }finally { try { if(fileReader != null) fileReader.close(); } catch (IOException e) { e.printStackTrace(); } } } }
三、 FileWriter 相关方法
- 构造方法摘要
Constructor and Description |
---|
FileWriter(File file) 给一个File对象构造一个FileWriter对象。 |
FileWriter(File file, boolean append) 给一个File对象构造一个FileWriter对象。 |
FileWriter(String fileName) 构造一个给定文件名的FileWriter对象。 |
FileWriter(String fileName, boolean append) 构造一个FileWriter对象,给出一个带有布尔值的文件名,表示是否附加写入的数据。 |
FileWriter(FileDescriptor fd) 构造与文件描述符关联的FileWriter对象。 |
- 相关方法摘要
Modifier and Type | Method and Description |
---|---|
void |
writer() 写入单个字符 |
void |
writer(char[]) 写入指定数组 |
void |
writer(char[], int off, int len) 写入指定数组的指定部分 |
void |
writer(String str) 写入整个字符串 |
void |
writer(String str, int off, int len)) 写入字符串的指定部分 |
-
相关API:String类:toCharArray():将String转换成char[]
-
注意:FileWriter使用后,必须要关闭(close)或刷新(flush),否则写入不到指定的文件。在Java中使用带有缓冲的流时进行文件写入时,数据首先被缓存在内存中。当缓冲区满或者close()或flush()方法被调用时,缓冲区中的数据才会被真正地写入到文件中。如果没有关闭流或者flush缓冲区,缓冲区中的数据就会一直保留在内存中,而不会被写入到文件中。如果程序突然崩溃或者关闭,这些缓冲的数据将会丢失,这可能会导致数据的不完整或者文件损坏。
-
代码演示:
import java.io.FileWriter; import java.io.IOException; /** * @author * @version 1.0 */ public class FileWriter_ { public static void main(String[] args) { String filePath = "e:\\note.txt"; FileWriter fileWriter = null; char[] chars = {'a','b','c'}; try { //创建FileWriter对象 fileWriter = new FileWriter(filePath);//默认是覆盖写入 //这种构造方法在使用FileWriter时,如果文件不存在,则会自动创建一个新的文件, // 如果文件已经存在,则会直接打开该文件并清空原有内容,从文件的开头开始写入新的内容。 //1. writer(int):写入单个字符 fileWriter.write('H'); //2. writer(char[]):写入指定数组 fileWriter.write(chars); //3. write