活动地址:CSDN21天学习挑战赛
//1. 创建FileReader对象, fileReader = new FileReader(filePath);
String filePath = “e:\story.txt”;
FileReader fileReader = null;
fileReader = new FileReader(filePath);
//2.循环读取 使用read, 单个字符读取,返回该字符,如果达到文件末尾返回-1
while ((data = fileReader.read()) != -1) {
System.out.print((char) data);
}
//3.循环读取 使用read(char[ ]), 返回的是实际读取到的字符数如果返回-1, 说明到文件结束。
while ((readLen = fileReader.read(buf)) != -1) {
System.out.print(new String(buf, 0, readLen));
}
4.new String(char[ ]):将char[ ]转换成String。
System.out.print(new String(buf, 0, readLen));
5.new String(char[ ],off,len):将char[ ]的指定部分转换成String。
package com.reader_;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/**
* @version 1.0
* @auther Demo龙
*/
public class FileReader_ {
public static void main(String[] args) {
// //创建FileReader对象
// String filepath="e:\\kkk.txt";
// FileReader fileReader = null;
// try {
// fileReader = new FileReader(filepath);
//
// } catch (FileNotFoundException e) {
// throw new RuntimeException(e);
// } finally {
// }
Test test = new Test();
test.readFile01();
test.readFile02();
}
}
class Test {
/**
* 单个字符读取文件
*/
public void readFile01() {
String filePath = "e:\\story.txt";
FileReader fileReader = null;
int data = 0;
//1. 创建FileReader对象
try {
fileReader = new FileReader(filePath);
//循环读取 使用read, 单个字符读取
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();
}
}
}
/**
* 字符数组读取文件
*/
public void readFile02() {
System.out.println("~~~readFile02 ~~~");
String filePath = "e:\\story.txt";
FileReader fileReader = null;
int readLen = 0;
char[] buf = new char[8];
//1. 创建FileReader对象
try {
fileReader = new FileReader(filePath);
//循环读取 使用read(buf), 返回的是实际读取到的字符数
//如果返回-1, 说明到文件结束
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对象
FileWriter fileWriter = null;
fileWriter = new FileWriter(filePath);//默认是覆盖写入- new FileWriter(filePath/String,true);//追加模式,相当于流的指针在尾端
- write(int):写入单个字符
fileWriter.write(‘H’);- write(char[]):写入指定数组
fileWriter.write(chars);- write(char[],off,len):写入指定数组的指定部分
fileWriter.write(“demo龙龙龙”.toCharArray(), 0, 3);- write(string):写入整个字符串
fileWriter.write(" 你好北京~");
fileWriter.write(“风雨之后,定见彩虹”);- write(string,off,len):写入字符串的指定部分
fileWriter.write(“上海天津”, 0, 2);
//在数据量大的情况下,可以使用循环操作.
演示代码
package com.writer_;
import java.io.FileWriter;
import java.io.IOException;
/**
* @version 1.0
* @auther Demo龙
*/
public class FileWriter_ {
public static void main(String[] args) {
String filePath = "e:\\note.txt";
//创建FileWriter对象
FileWriter fileWriter = null;
char[] chars = {'a', 'b', 'c'};
try {
fileWriter = new FileWriter(filePath);//默认是覆盖写入
// 3) write(int):写入单个字符
fileWriter.write('H');
// 4) write(char[]):写入指定数组
fileWriter.write(chars);
// 5) write(char[],off,len):写入指定数组的指定部分
fileWriter.write("demo龙龙龙".toCharArray(), 0, 3);
// 6) write(string):写入整个字符串
fileWriter.write(" 你好,世界");
fileWriter.write("风雨之后,定见彩虹");
// 7) write(string,off,len):写入字符串的指定部分
fileWriter.write("陕西西安", 0, 2);
//在数据量大的情况下,可以使用循环操作.
} catch (IOException e) {
e.printStackTrace();
} finally {
//对应FileWriter , 一定要关闭流,或者flush才能真正的把数据写入到文件
/*
看看代码
private void writeBytes() throws IOException {
this.bb.flip();
int var1 = this.bb.limit();
int var2 = this.bb.position();
assert var2 <= var1;
int var3 = var2 <= var1 ? var1 - var2 : 0;
if (var3 > 0) {
if (this.ch != null) {
assert this.ch.write(this.bb) == var3 : var3;
} else {
this.out.write(this.bb.array(), this.bb.arrayOffset() + var2, var3);
}
}
this.bb.clear();
}
*/
try {
//fileWriter.flush();
//关闭文件流,等价 flush() + 关闭
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("程序结束...");
}
}
演示结果

