- 复制文本文件
–一次读写一个字符
–一次读写一个字符数组
不带参数:
package com.demo03;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/*
* 需求:
* 把项目路径下的FileWriterDemo.java中的内容复制到项目路径下的Copy.java中
*
* 文件复制也是有规律可循的,也就是说有套路。
*
* 数据源:
* FileWriterDemo.java -- 读数据 -- FileReader
* 目的地:
* Copy.java -- 写数据 -- FileWriter
*/
public class CopyFileDemo {
public static void main(String[] args) throws IOException {
//创建输入流对象
FileReader fr = new FileReader("c:\\zy.txt");
//创建输出流对象
FileWriter fw = new FileWriter("c:\\Copy.txt");
//读写数据
int ch;
while((ch=fr.read())!=-1) {
fw.write(ch);
}
//释放资源
fw.close();
fr.close();
}
}
带参数:
package com.demo03;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/*
* 需求:
* 把项目路径下的FileWriterDemo.java中的内容复制到项目路径下的Copy.java中
*
* 数据源:
* FileWriterDemo.java -- 读数据 -- FileReader
* 目的地:
* Copy.java -- 写数据 -- FileWriter
*/
public class CopyFileDemo2 {
public static void main(String[] args) throws IOException {
//创建输入流对象
FileReader fr = new FileReader("FileWriterDemo.java");
//创建输出流对象
FileWriter fw = new FileWriter("d:\\Copy.java");
//读写数据
char[] chs = new char[1024];
int len;
while((len=fr.read(chs))!=-1) {
fw.write(chs, 0, len);
}
//释放资源
fw.close();
fr.close();
}
}
字符缓冲流
在真正的应用场合中,我们是应用这种缓冲流的方式来做的
- BufferedWriter基本用法
- BufferedReader基本用法
- 字符缓冲流复制文本文件
- 特殊功能
–BufferedWriter
void newLine()
–BufferedReader
String readLine()
- 字符缓冲流特殊功能复制文本文件
* BufferedWriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
* BufferedReader:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
package com.demo04;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/*
* BufferedWriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
* BufferedReader:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
*/
public class BufferedStreamDemo {
public static void main(String[] args) throws IOException {
//创建输出缓冲流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("c://zy1.txt"));
bw.write("hello");
bw.flush();
bw.close();
//创建输入缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("c://zy.txt"));
//一次读写一个字符
int ch;
while((ch=br.read())!=-1){
System.out.print((char)ch);
}
//一次读写一个字符数组,多个字符的读取
char[] chs = new char[1024];
int len;
while((len=br.read(chs))!=-1) {
System.out.print(new String(chs,0,len));
}
//释放资源
br.close();
}
}
利用输入输出缓冲流来实现文件的复制
package com.demo04;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/*
* 需求:
* 把项目路径下的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("c://zy.txt"));
//创建输出缓冲流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("c://zhangyu.txt"));
//读写数据
int ch;
//一次读写一个字符
while((ch = br.read())!=-1) {
bw.write(ch);
}
/*
//一次读写一个字符数组
char[] chs = new char[1024];
int len;
while((len=br.read(chs))!=-1) {
bw.write(chs,0,len);
}*/
//释放资源
bw.close();
br.close();
}
}
* 缓冲流的特殊功能:
* BufferedWriter
* void newLine():写一个换行符,这个换行符由系统决定
* BufferedReader
* String readLine():一次读取一行数据,但是不读取换行符
bw.newLine() 和 bw.write("\r\n")作用一样
package com.demo05;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
/*
* 缓冲流的特殊功能:
* BufferedWriter
* void newLine():写一个换行符,这个换行符由系统决定
* BufferedReader
* String readLine():一次读取一行数据,但是不读取换行符
*/
public class BufferedStreamDemo {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new FileWriter("c://bw2.txt"));
for(int x=0; x<10; x++) {
bw.write("hello"+x);
//bw.write("\r\n");
bw.newLine();
bw.flush();
}
bw.close();
//BufferedReader br = new BufferedReader(new FileReader("br.txt"));
/*
String line = br.readLine();
System.out.println(line);
line = br.readLine();
System.out.println(line);
line = br.readLine();
System.out.println(line);
line = br.readLine();
System.out.println(line);
*/
//String line;
//1:br.readLine()
//2:line=br.readLine()
//3:line != null
/*while((line=br.readLine())!=null) {
System.out.println(line);
}
br.close();*/
}
}