一、缓冲流复制文本文件的两种方式
CopyFileDdmo.java
需求:
把项目路径下的FileWriterDemo.java中的内容复制到项目路径下的Copy.java中
数据流:
FileWriterDemo.java-----读数据----FileReader----高效读取数据----BufferedReader
目的地:
Copy.java----写数据---FileWriter----高效的写数据-----BufferedWriter
public class CopyFileDemo{
public static void main(String[] args) throws IOException{
//创建输入缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("FileWriterDemo.java"));
//创建输出缓冲流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("Copy.java"));
//读写数据
//一次读写一个字符
int ch;
while(ch = br.read()!==-1){
bw.write(ch);
}
//一次一个字符数组
char[] chs = new char [1024];
int len;
while((len = br.read())!=-1){
bw.write(chs,0,len);
}
//释放资源
bw.close();
br.close();
}
}
二、缓冲流的特殊功能
缓冲流的特殊功能
BufferedWriter
void newLine():写一个换行符,这个执行符由系统决定
BufferedReader
void readLine():一次读取一行数据,但是不读取换行符
BufferedStreamDemo.java
public class BufferedStreamDemo{
public static void main(String[] args) throws IOException{
/*void newLine()
BufferedWriter bw = new BufferedWriter(new FileWriter("bw2.txt"));
for(int x ; x<10 ; x++){
bw.writer("writer"+x);
//bw.write("\r\n);
bw.newLine();
bw.flush();
}
bw.close();*/
//void readLine()
BufferedReader br = new BufferedReader(new FileReader("br.txt"));
String line;
while((line = br.read())!=null){
System.out.println(line);
}
br.close();
}
}
三、缓冲流特殊功能复制文本文件
需求:
把项目路径下的FileWriterDemo.java中的内容复制到项目路径下的Copy.java中
数据流:
FileWriterDemo.java-----读数据----FileReader----高效读取数据----BufferedReader
目的地:
Copy.java----写数据---FileWriter----高效的写数据-----BufferedWriter
CopyFileDemo.java
public class CopyFileDemo{
public static void main(String[] args) throws IOException{
//创建输入缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("FileWriterDemo.java"));
//创建输出缓冲流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("Copy.java"));
//读取数据
String line;
while((line = br.read())!=null){
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
}
}
四、复制文本文件的五种方式
复制文本文件(五种方式)
数据源
FileWriterDemo.java
目的地
Copy.java
CopyFileTest.java
public class CopyFileDemo{
public static void main(String[] args) throws IOException{
String secFileName = "FileWriterDemo.java";
String destFileName = "Copy.java";
method1(secFileName ,destFileName );
method2(secFileName ,destFileName );
method3(secFileName ,destFileName );
method4(secFileName ,destFileName );
method5(secFileName ,destFileName );
//基本流一次读写一个字符
public static void method1(secFileName ,destFileName ) throws IOException{
//创建输入流对象
FileReader fr = new FileReader(secFileName);
//创建输出流对象
FileWriter fw = new FileWriter(destFileName);
int ch ;
while((ch=fr.read())!=-1){
fw.writer(ch);
}
//释放资源
fw.close();
fr.close();
}
//基本流一次读写一个字符数组
public static void method2(secFileName ,destFileName ) throws IOException{
FileReader fr = new FileReader(secFileName);
FileWriter fw = new FileWriter(destFileName);
char[] chs = new char [1024];
int len;
while((len = fr.read())!=-1){
fw.write(chs,0,len);
}
//释放资源
fw.close();
fr.close();
}
//缓冲流一次读写一个字符
public static void method3(secFileName ,destFileName ) throws IOException{
//创建输入缓冲流
BufferedReader br = new BufferedReader(new FileReader(secFileName));
//创建输出缓冲流
BufferedWriter bw = new BufferedWriter(new FileWriter(destFileName ));
int ch ;
while((ch=br.read())!=-1){
bw.writer(ch);
}
//释放资源
bw.close();
br.close();
}
//缓冲流一次读写一个字符数组
public static void method4(secFileName ,destFileName ) throws IOException{
//创建输入缓冲流
BufferedReader br = new BufferedReader(new FileReader(secFileName));
//创建输出缓冲流
BufferedWriter bw = new BufferedWriter(new FileWriter(destFileName ));
char[] chs = new char [1024];
int len;
while((len = br.read())!=-1){
bw.write(chs,0,len);
}
//释放资源
bw.close();
br.close();
}
//缓冲流的特殊功能
public static void method5(secFileName ,destFileName ) throws IOException{
//创建输入缓冲流
BufferedReader br = new BufferedReader(new FileReader(secFileName));
//创建输出缓冲流
BufferedWriter bw = new BufferedWriter(new FileWriter(destFileName ));
String line;
while((line = br.read())!=null){
bw.write(line);
bw.newLine();
bw.flush();
}
//释放资源
bw.close();
br.close();
}
}
}
五、把文本文件中的数据读取到集合
从文本文件中读取数据到ArrayList集合中,并便利集合
每一行数据作为一个字符串元素
分析:
1、创建输入缓冲流对象
2、创建集合对象
3、读取数据,每次读取一行数据,把该行数据作为一个元素存储进集合中
4、释放资源
5、遍历集合
FileToArrayListTest.java
public class FileToArrayTest{
public static void main(Sring[] args) throws IOException{
//创建输入缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("array.txt"));
//创建集合对象
ArrayList<String> array = new ArrayList<String>();
//读取数据
String line;
while((line = br.readLine())!= null){
array.add(line);
}
//释放资源
br.close();
//遍历集合
for(int x = 0; x < array.size() ; x++){
String s = array.get(x);
System.out.println(s);
}
}