FileReader
一个一个字符的读:
package com.gao.IO;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Test01 {
public static void main(String[] args) throws IOException {
//文件-->程序:
//有一个文件:--->创建一个File类的对象
File f = new File("D:\\download\\idea\\练习\\Test.txt");
//自己去新建文本文档,填入相应地址
//利用FileReader这个流,这个“管”怼到源文件商务 --->创建一个FileReader的流的对象
FileReader fr = new FileReader(f);//出现异常,选择第一个
//进行操作“吸”的动作 --->读取文件
int n1 = fr.read();//出现异常,选第一个抛出
/*
下面代码验证了:如果到了文件的结尾处,那么读取的内容为-1
int n2 = fr.read();
int n3 = fr.read();
int n4 = fr.read();
int n5 = fr.read();
int n6 = fr.read();
int n7 = fr.read();
int n8 = fr.read();
System.out.println(n2);
System.out.println(n3);
System.out.println(n4);
System.out.println(n5);
System.out.println(n6);
System.out.println(n7);
System.out.println(n8);
*/
/*
优化:
int n = fr.read();
while(n!=-1){
System.out.println((char)n);//转换为char类型
n = fr.read();
}
*/
System.out.println(n1);//输出的是ASCII码
//“管”不用了,就要关闭 --->关闭流
//流,数据库,网络走眼,靠jvm本身没有办法帮我们关闭的,必须进行手动关闭
fr.close();
}
}
五个五个字符的读:
package com.gao.IO;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class Test02 {
public static void main(String[] args) throws IOException {
//文件-->程序:
//1.创建一个File类的对象
File f = new File("D:\\download\\idea\\练习\\Test.txt");
//2.创建一个FileReader的流的对象
FileReader fr = new FileReader(f);
//3.读取文件
//引入一个“快递员的小车”,这个“小车”一次拉5个快递:
char[] ch = new char[5];
int len = fr.read(ch);//一次读取五个:返回值是这个数组中的有效长度
while (len!=-1){
//System.out.println(len);
/* 错误方式:
for (int i = 0;i<ch.length;i++){
System.out.println(ch[i]);
}
*/
/* 正确方式1
for (int i = 0;i<len;i++){
System.out.println(ch[i]);
}
*/
//正确方式2:将数组转为字符串类型
String str = new String(ch,0,len);
System.out.print(str);
len = fr.read(ch);
}
//4.关闭流
fr.close();
}
}
FileWriter
一个一个字符的向外输出:
package com.gao.IO;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class Test03 {
public static void main(String[] args) throws IOException {
//1.有个目标文件:
File f = new File("D:\\download\\idea\\练习\\demo.txt");//写地址就好,不用自己创建
//2.FilWriter管怼到文件上去:
FileWriter fw = new FileWriter(f);
//3.开始动作:输出动作:
//一个字符一个字符的往外输出:
String str = "hhhh我好快乐";
for (int i = 0;i<str.length();i++){
fw.write(str.charAt(i));
}
//4.关闭流
fw.close();
}
}
//如果目标文件不存在的话,那么会自动创建此文件
//如果目标文件存在的话,new FileWriter(f)相当于对源文件进行覆盖操作
// new FileWriter(f,false)效果相同,是覆盖,不是追加
// new FileWriter(f,true)是追加,不是覆盖
五个五个字符的向外输出:(利用缓冲数组)
package com.gao.IO;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class Test04 {
public static void main(String[] args) throws IOException {
//1.有个目标文件:
File f = new File("D:\\download\\idea\\练习\\demo.txt");
//2.FilWriter管怼到文件上去:
FileWriter fw = new FileWriter(f,true);
//3.开始动作:输出动作:
String str = "当你说的是真的";
char[] chars = str.toCharArray();
fw.write(chars);
//4.关闭流
fw.close();
}
}
复制文件
package com.gao.IO;
import java.io.*;
public class Test05 {
public static void main(String[] args) throws IOException {
//1.有一个源文件
File f1 = new File("D:\\download\\idea\\练习\\Test.txt");
//2.有一个目标文件
File f2 = new File("D:\\download\\idea\\练习\\Demo.txt");
//3.搞一个输入的管,怼到源文件上:
FileReader fr = new FileReader(f1);
//4.搞一个输出的管,怼到目标文件上:
FileWriter fw = new FileWriter(f2);
//5.开始动作:
//方式1:一个字符一个字符的复制:
/*
int n = fr.read();
while (n!=1){
fw.write(n);
n = fr.read();
}
*/
//方式2:利用缓冲字符数组:
/*
char[] ch = new char[5];
int len = fr.read(ch);
while (len!=-1){
fw.write(ch,0,len);//将缓冲数组中有效长度写出
len = fr.read(ch);
}
*/
//方式3 利用缓冲字符数组,将数组转为String写出
char[] ch = new char[5];
int len = fr.read(ch);
while (len!=-1){
String s = new String(ch,0,len);
len = fr.read(ch);
}
//6.关闭流:关闭流的时候,倒着关闭,后用谁,先关谁
fw.close();
fr.close();
}
}
不要用字符流去操作非文本文件
文本文件:txt java c cpp ---> 建议使用字符流操作
非文本文件:jpg MP3 MP4 doc ppt--->建议使用字节流操作
标签:fr,java,read,FileReader,int,File,FileWriter,new From: https://www.cnblogs.com/gaoxiaocuo/p/16707234.html