文件的字符输入输出流文件的字符输入输出流
文件的字符输入输出流和10.4.2节介绍的文件的字节输入输出流有相同的功能,但是传送数据的方式不一样,字节流以字节为单位传送数据,可以是任何类型的数据,例如文本、音频、视频、图片等;而字符流以字符为单位传送数据,只能传送文本类型的数据。
1(创建文件字符输入流
文件字符输入流可以从指定路径的文件中读取字节数据。文件字符输入流继承自Reader类,并实现了读取字符输入流的各种方法。要使用文件字符输入流,必须使用构造方法创建它的实例对象。创建文件字符输入流的常用构造方法如下。
, , Fi...
文件的字符输入输出流
文件的字符输入输出流和10.4.2节介绍的文件的字节输入输出流有相同的功能,但是传送数据的方式不一样,字节流以字节为单位传送数据,可以是任何类型的数据,例如文本、音频、视频、图片等;而字符流以字符为单位传送数据,只能传送文本类型的数据。
1(创建文件字符输入流
文件字符输入流可以从指定路径的文件中读取字节数据。文件字符输入流继承自Reader类,并实现了读取字符输入流的各种方法。要使用文件字符输入流,必须使用构造方法创建它的实例对象。创建文件字符输入流的常用构造方法如下。
, , FileReader(File file)方法
该构造方法使用File类型的文件对象创建FileReader类的实例对象(即文件字符输入流)。
语法:
new FileReader(file);
file:File文件类型的实例对象。
, , FileReader(String name)方法
该构造方法根据指定的文件名称和路径,创建FileReader类的实例对象(即文件字符输入流)。
语法:
new FileReader(filePath);
filePath:文件的绝对路径或相对路径。
2(创建文件字符输出流
文件字符输出流关联指定路径的文件,数据通过文件字符输出流以字节为单位输出并保存到文件中。文件输出流继承自Writer类,并实现了向文件输出数据的各种方法。要使用文件字符输出流,必须使用构造方法创建它的实例对象。创建文件字符输出流的常用构造方法如下。
, , FileWriter(File file)方法
该构造方法使用File类型的文件对象,创建与该文件关联的FileWriter类的实例对象(即文件字符输出流)。
语法:
new FileWriter(file);
file:File文件类型的实例对象。
, , FileWriter(String name)方法
该构造方法根据指定的文件名称和路径,创建关联该文件的FileWriter类的实例对象(即文件字符输出流)。
语法:
new FileWriter(filePath);
filePath:文件的绝对路径或相对路径。
3(文件字符输入流和文件字符输出流的应用
文件字符输入输出流的父类Reader和Writer类已经定义了访问数据流的基本方法,文件字符输入流和输出流针对文件类型实现了这些访问数据流的方法。这些方法已经在10.3节作过介绍。这里将通过实例演示如何使用文件输入流和文件输出流,读写指定的文本文件。
本实例创建了关联程序源代码文件(即FileInAndOutChar.java文件)的文件字符输入流,
通过该输入流读取文件信息到StringBuilder类的实例对象(即字符串生成器对象)strBuilder中,并在控制台显示strBuilder对象的内容,然后将这些内容通过文件字符输出流保存到实例所在路径下的“FileInAndOutChar.bak”文件中。实现步骤如下。
(1)创建FileInAndOutChar类,编写main()主方法,在主方法中定义StringBuilder类的实例对象strBuilder(即字符串生成器),调用readFile()方法读取程序源代码到strBuilder对象中,然后把strBuilder对象的内容输出到控制台,并通过writeFile()方法保存到FileInAndOutChar.bak文件中。关键代码如下:
src\com\lzw\FileInAndOutChar.java关键代码:
public static void main(String[] args) {
StringBuilder strBuilder=new StringBuilder();
readFile(strBuilder); // 调用读取字符输入流数据的方法
System.out.println(strBuilder);
writeFile(strBuilder); // 调用写入数据到字符输出流的方法
}
(2)编写读取字符输入流数据的readFile()方法,在方法中创建文件字符输入流fReader,通过该文件字符输入流获取文件的内容到strBuilder对象中。关键代码如下:
src\com\lzw\FileInAndOutChar.java关键代码:
private static void readFile(StringBuilder strBuilder) {
try {
String filePath="src/com/lzw/FileInAndOutChar.java";
File file=new File(filePath);
FileReader fReader=new FileReader(file); // 创建文件字符输入流
char[] data=new char[512];
int rs=0;
while((rs=fReader.read(data))>0){ // 在循环中读取数据
strBuilder.append(data,0,rs);
}
} catch (Exception e) {
e.printStackTrace();
}
}
(3)编写输出数据到文件字符输出流的writeFile()方法,在方法中创建文件字符输出流fWriter,然后将strBuilder对象中的内容通过文件字符输出流保存到实例所在路径中的“FileInAndOutChar.bak”文件中。关键代码如下:
src\com\lzw\FileInAndOutChar.java关键代码:
private static void writeFile(StringBuilder strBuilder) {
try {
String filePath="FileInAndOutChar.bak";
File file=new File(filePath);
FileWriter fWriter=new FileWriter(file); // 创建文件字符输出流
fWriter.write(strBuilder.toString()); // 将数据写入输出流
} catch (Exception e) {
e.printStackTrace();
}
}
完整代码
src\com\lzw\FileInAndOutChar.java完整代码
package com.lzw;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
public class FileInAndOutChar {
public static void main(String[] args) {
StringBuilder strBuilder=new StringBuilder();
readFile(strBuilder);
System.out.println(strBuilder);
writeFile(strBuilder);
}
private static void readFile(StringBuilder strBuilder) {
try {
String filePath="src/com/lzw/FileInAndOutChar.java";
File file=new File(filePath);
FileReader fReader=new FileReader(file);
char[] data=new char[512];
int rs=0;
while((rs=fReader.read(data))>0){
strBuilder.append(data,0,rs);
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static void writeFile(StringBuilder strBuilder) {
try {
String filePath="FileInAndOutChar.bak";
File file=new File(filePath);
FileWriter fWriter=new FileWriter(file);
fWriter.write(strBuilder.toString());
fWriter.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
}
本文档为【文件的字符输入输出流】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。