您的位置:首页 > 其它

IO第七回:访问文件的字符流—FileReader/FileWriter

2018-03-14 20:21 429 查看

IO第七回:访问文件的字符流—FileReader/FileWriter

标签: IO流

IO第七回访问文件的字符流FileReaderFileWriter
FileReader
构造方法

方法摘要

源码分析

代码演示

FileWriter
构造方法

方法摘要

源码分析

综合演示文件复制

FileReader/FileWriter 用于从文件中读取字符流、将字符流写入文件中。

继承于InputStreamReader和OutputStreamWriter 。

FileReader 是用于读取字符流的类,它继承于InputStreamReader。要读取原始字节流,请考虑使用 FileInputStream。

FileWriter 是用于写入字符流的类,它继承于OutputStreamWriter。要写入原始字节流,请考虑使用 FileOutputStream。

FileReader

public class FileReader extends InputStreamReader


读取字符文件。

该类的构造函数假定默认字符编码和默认字节缓冲区大小是适当的。 要自己指定这些值,请在FileInputStream上构造一个InputStreamReader。

FileReader是用于读取字符流。 要读取原始字节流,请考虑使用FileInputStream 。

构造方法

FileReader(File file)


创建一个新的 FileReader ,给出 File读取。

FileReader(FileDescriptor fd)


创建一个新的 FileReader ,给定 FileDescriptor读取。

FileReader(String fileName)


创建一个新的 FileReader ,给定要读取的文件的名称。

方法摘要

该类没有自己的方法,都是使用父类的方法

源码分析

package java.io;

public class FileReader extends InputStreamReader {

public FileReader(String fileName) throws FileNotFoundException {
super(new FileInputStream(fil java io系列21之 InputStreamReader和OutputStreamWritereName));
}

public FileReader(File file) throws FileNotFoundException {
super(new FileInputStream(file));
}

public FileReader(FileDescriptor fd) {
super(new FileInputStream(fd));
}
}


代码演示

package charIO;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;

/**
* Created by japson on 8/22/2017.
*/
public class FileReaderWriter {
public static void fileReader() {
File file = null;
FileReader fileReader = null;
try {
file = new File("testRead.txt");
fileReader = new FileReader(file);
char[] c = new char[8];
int len;
while ((len = fileReader.read(c)) != -1) {
String str = new String(c,0,len);
System.out.print(str);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

public static void main(String[] args) {
fileReader();
}

}


FileWriter

public class FileWriter extends OutputStreamWriter


方便写入字符串。

该类的构造函数假定默认字符编码和默认字节缓冲区大小是可以接受的。 要自己指定这些值,请在FileOutputStream上构造一个OutputStreamWriter。

文件是否可用或可能被创建取决于底层平台。 特别是某些平台允许一次只能打开一个文件来写入一个FileWriter (或其他文件写入对象)。 在这种情况下,如果所涉及的文件已经打开,则此类中的构造函数将失败。

FileWriter是用于写入字符流。 要编写原始字节流,请考虑使用FileOutputStream 。

构造方法

FileWriter(File file)

给一个File对象构造一个FileWriter对象。

FileWriter(File file, boolean append)

给一个File对象构造一个FileWriter对象。append 如果是 true ,那么数据将被写入文件的末尾而不是开头。

FileWriter(FileDescriptor fd)

构造与文件描述符关联的FileWriter对象。

FileWriter(String fileName)

构造一个给定文件名的FileWriter对象。

FileWriter(String fileName, boolean append)

给一个File对象构造一个FileWriter对象。 如果第二个参数是true ,则字节将写入文件的末尾而不是开头。

方法摘要

该类没有自己的方法,都是使用父类的方法

源码分析

package java.io;

public class FileWriter extends OutputStreamWriter {

public FileWriter(String fileName) throws IOException {
super(new FileOutputStream(fileName));
}

public FileWriter(String fileName, boolean append) throws IOException {
super(new FileOutputStream(fileName, append));
}

public FileWriter(File file) throws IOException {
super(new FileOutputStream(file));
}

public FileWriter(File file, boolean append) throws IOException {
super(new FileOutputStream(file, append));
}

public FileWriter(FileDescriptor fd) {
super(new FileOutputStream(fd));
}
}


综合演示:文件复制

输入流对应的文件一定要存在,输出流对应的文件可以不存在,执行过程中会自动创建。

public class FileReaderWriter {

public static void fileReaderWriter() {
File file = null;
FileReader fileReader = null;
FileWriter fileWriter = null;
try {
file = new File("testRead.txt");
fileReader = new FileReader(file);
fileWriter = new FileWriter("testWriter.txt");
char[] c = new char[5];
int len;
while ((len = fileReader.read(c)) != -1) {
fileWriter.write(c,0,len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fileReader.close();
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

public static void main(String[] args) {
fileReaderWriter();
}

}


字符流只能复制字符。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  io流
相关文章推荐