1.1 复制文本文件的5种方式
A:利用基本流一次读写一个字符
B:利用基本流一次读写一个字符数组
C:利用缓冲流一次读写一个字符
D:利用缓冲流一次读写一个字符数组
E:利用缓冲流的特有方法一次读写一个字符串
1.1.1 案例代码十二:
package com.itheima_06;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;/* * 复制文本文件(5种方式) * * 数据源: * FileWriterDemo.java * 目的地: * Copy.java */public class CopyFileTest {public static void main(String[] args) throws IOException {/*method1("FileWriterDemo.java","Copy.java");method2("FileWriterDemo.java","Copy.java");method3("FileWriterDemo.java","Copy.java");method4("FileWriterDemo.java","Copy.java");method5("FileWriterDemo.java","Copy.java");*/String srcFileName = "FileWriterDemo.java";String destFileName = "Copy.java";// method1(srcFileName,destFileName);// method2(srcFileName,destFileName);method3(srcFileName,destFileName);// method4(srcFileName,destFileName);// method5(srcFileName,destFileName);}//缓冲流一次读写一个字符串public static void method5(String srcFileName,String destFileName) throws IOException {//创建输入缓冲流对象BufferedReader br = new BufferedReader(new FileReader(srcFileName));//创建输出缓冲流对象BufferedWriter bw = new BufferedWriter(new FileWriter(destFileName));//一次读写一个字符串String line;while((line=br.readLine())!=null){bw.write(line);bw.newLine();bw.flush();}//释放资源bw.close();br.close();}//缓冲流一次读写一个字符数组public static void method4(String srcFileName,String destFileName) throws IOException {//创建输入缓冲流对象BufferedReader br = new BufferedReader(new FileReader(srcFileName));//创建输出缓冲流对象BufferedWriter bw = new BufferedWriter(new FileWriter(destFileName));//一次读写一个字符数组char[] chs = new char[1024];int len;while((len=br.read(chs))!=-1) {bw.write(chs,0,len);}//释放资源bw.close();br.close();}//缓冲流一次读写一个字符public static void method3(String srcFileName,String destFileName) throws IOException {//创建输入缓冲流对象BufferedReader br = new BufferedReader(new FileReader(srcFileName));//创建输出缓冲流对象BufferedWriter bw = new BufferedWriter(new FileWriter(destFileName));//一次读写一个字符int ch;while((ch=br.read())!=-1) {bw.write(ch);}//释放资源bw.close();br.close();}//基本流一次读写一个字符数组public static void method2(String srcFileName,String destFileName) throws IOException {//创建输入流对象FileReader fr = new FileReader(srcFileName);//创建输出流对象FileWriter fw = new FileWriter(destFileName);//一次读写一个字符数组char[] chs = new char[1024];int len;while((len=fr.read(chs))!=-1) {fw.write(chs,0,len);}//释放资源fw.close();fr.close();}//基本流一次读写一个字符public static void method1(String srcFileName,String destFileName) throws IOException {//创建输入流对象FileReader fr = new FileReader(srcFileName);//创建输出流对象FileWriter fw = new FileWriter(destFileName);//一次读写一个字符int ch;while((ch=fr.read())!=-1) {fw.write(ch);}//释放资源fw.close();fr.close();}}
1.2 把集合中的数据写到文本文件
把ArrayList集合中的字符串数据存储到文本文件项目根目下的array.txt中
每一个字符串元素作为文件中的一行数据
1.2.1 案例代码十三:
package com.itheima_06;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.util.ArrayList;/* * 把ArrayList集合中的字符串数据存储到文本文件 * 每一个字符串元素作为文件中的一行数据 * * 分析: * A:创建集合对象 * B:往集合中添加字符串元素 * C:创建输出缓冲流对象 * D:遍历集合,得到每一个字符串元素,然后把该字符串元素作为数据写到文本文件 * E:释放资源 */public class ArrayListToFileTest {public static void main(String[] args) throws IOException {//创建集合对象ArrayList<String> array = new ArrayList<String>();//往集合中添加字符串元素array.add("hello");array.add("world");array.add("java");//创建输出缓冲流对象BufferedWriter bw = new BufferedWriter(new FileWriter("array.txt"));//遍历集合,得到每一个字符串元素,然后把该字符串元素作为数据写到文本文件for(int x=0; x<array.size(); x++) {String s = array.get(x);bw.write(s);bw.newLine();bw.flush();}//释放资源bw.close();}}
1.3 把文本文件中的数据读取到集合
从项目根目录下的array.txt文本文件中读取数据到ArrayList集合中,并遍历集合,每一行数据作为一个字符串元素
1.3.1 案例代码十四:
package com.itheima_06;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.util.ArrayList;/* * 从文本文件中读取数据到ArrayList集合中,并遍历集合 * 每一行数据作为一个字符串元素 * * 分析: * A:创建输入缓冲流对象 * B:创建集合对象 * C:读取数据,每次读取一行数据,把该行数据作为一个元素存储到集合中 * D:释放资源 * E:遍历集合 */public class FileToArrayListTest {public static void main(String[] 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);}}}