* OutputStreamWriter的方法:
*
* public void write(int c);//写一个字符
* public void write(char cbuf[]);//写一个字符数组
* public void write(char cbuf[],int off,int len);//写一个字符数组的一部分
* public void write(String str);//写一个字符串
* public void write(String str,int off,int len);//写一个字符串的一部分
*
* 面试题:
* close()和flush()的区别?
* close()关闭流对象,但是先刷新一次缓冲区,关闭以后,该对象不可以继续再使用了。
* flush()仅仅刷新缓冲区,刷新之后,流对象还可以继续使用。
import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; /* * OutputStreamWriter的方法: * * public void write(int c);//写一个字符 * public void write(char cbuf[]);//写一个字符数组 * public void write(char cbuf[],int off,int len);//写一个字符数组的一部分 * public void write(String str);//写一个字符串 * public void write(String str,int off,int len);//写一个字符串的一部分 * * 面试题: * close()和flush()的区别? * close()关闭流对象,但是先刷新一次缓冲区,关闭以后,该对象不可以继续再使用了。 * flush()仅仅刷新缓冲区,刷新之后,流对象还可以继续使用。 * */ public class IntegerDemo { public static void main(String[] args) throws IOException { FileOutputStream fos = new FileOutputStream("E:\zikao\file\cs.txt"); OutputStreamWriter osw = new OutputStreamWriter(fos); osw.write("我爱你"); osw.close(); } }
* InputStreamReader的方法:
*
* int read();//一次读取一个字符
* int read(char chs[]);//一次读取一个字符数组
import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; /* * InputStreamReader的方法: * * int read();//一次读取一个字符 * int read(char chs[]);//一次读取一个字符数组 * */ public class IntegerDemo { public static void main(String[] args) throws IOException { FileInputStream fis = new FileInputStream("E:\zikao\file\cs.txt"); InputStreamReader isr = new InputStreamReader(fis); int ch = 0; while ((ch = isr.read()) != -1) { System.out.print((char) ch); } isr.close(); } }
* 字符缓冲流的特殊方法:
*
* BufferedReader:
* public String readLine();//一次读取一行数据
* 包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回null
*
* BufferedWriter:
* public void newLine();//根据系统来决定换行符
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; /* * 字符缓冲流的特殊方法: * * BufferedReader: * public String readLine();//一次读取一行数据 * 包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回null * * BufferedWriter: * public void newLine();//根据系统来决定换行符 * */ public class IntegerDemo { public static void main(String[] args) throws IOException { myWrite(); myRead(); } public static void myRead() throws IOException { FileReader fr = new FileReader("E:\zikao\file\cs.txt"); BufferedReader br = new BufferedReader(fr); String line = null; while ((line = br.readLine()) != null) { System.out.println(line); } } public static void myWrite() throws IOException { FileWriter fw = new FileWriter("E:\zikao\file\cs.txt"); BufferedWriter bw = new BufferedWriter(fw); for (int i = 0; i < 10; i++) { bw.write("hello" + i); bw.newLine(); bw.flush(); } bw.close(); } }
* 字符流5种方式复制文件:
*
* 复制数据,如果使用记事本打开后能够读懂,就用字符流,否则用字节流
* 通过该原理,用字符流更方便
* 字符流有5种方式复制数据,推荐掌握第5种
*
* 基本字符流一次读写一个字符
* 基本字符流一次读写一个字符数组
* 字符缓冲流一次读写一个字符
* 字符缓冲流一次读写一个字符数组
* 字符缓冲流一次读写一个字符串
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; /* * 字符流5种方式复制文件: * * 复制数据,如果使用记事本打开后能够读懂,就用字符流,否则用字节流 * 通过该原理,用字符流更方便 * 字符流有5种方式复制数据,推荐掌握第5种 * * 基本字符流一次读写一个字符 * 基本字符流一次读写一个字符数组 * 字符缓冲流一次读写一个字符 * 字符缓冲流一次读写一个字符数组 * 字符缓冲流一次读写一个字符串 * */ public class IntegerDemo { public static void main(String[] args) throws IOException { method1("E:\zikao\cs.txt", "E:\zikao\file\1.txt"); method2("E:\zikao\cs.txt", "E:\zikao\file\2.txt"); method3("E:\zikao\cs.txt", "E:\zikao\file\3.txt"); method4("E:\zikao\cs.txt", "E:\zikao\file\4.txt"); method5("E:\zikao\cs.txt", "E:\zikao\file\5.txt"); } // 基本字符流一次读写一个字符 public static void method1(String srcString, String destString) throws IOException { long start = System.currentTimeMillis(); FileReader fr = new FileReader(srcString); FileWriter fw = new FileWriter(destString); int ch; while ((ch = fr.read()) != -1) { fw.write(ch); } fw.close(); fr.close(); long end = System.currentTimeMillis(); System.out.println("共耗时:" + (end - start) + "毫秒"); } // 基本字符流一次读写一个字符数组 public static void method2(String srcString, String destString) throws IOException { long start = System.currentTimeMillis(); FileReader fr = new FileReader(srcString); FileWriter fw = new FileWriter(destString); char chs[] = new char[1024]; int len = 0; while ((len = fr.read(chs)) != -1) { fw.write(chs, 0, len); } fw.close(); fr.close(); long end = System.currentTimeMillis(); System.out.println("共耗时:" + (end - start) + "毫秒"); } // 字符缓冲流一次读写一个字符 public static void method3(String srcString, String destString) throws IOException { long start = System.currentTimeMillis(); FileReader fr = new FileReader(srcString); FileWriter fw = new FileWriter(destString); BufferedReader br = new BufferedReader(fr); BufferedWriter bw = new BufferedWriter(fw); int ch; while ((ch = br.read()) != -1) { bw.write(ch); } bw.close(); br.close(); long end = System.currentTimeMillis(); System.out.println("共耗时:" + (end - start) + "毫秒"); } // 字符缓冲流一次读写一个字符数组 public static void method4(String srcString, String destString) throws IOException { long start = System.currentTimeMillis(); FileReader fr = new FileReader(srcString); FileWriter fw = new FileWriter(destString); BufferedReader br = new BufferedReader(fr); BufferedWriter bw = new BufferedWriter(fw); char chs[] = new char[1024]; int len = 0; while ((len = br.read(chs)) != -1) { bw.write(chs, 0, len); } bw.close(); br.close(); long end = System.currentTimeMillis(); System.out.println("共耗时:" + (end - start) + "毫秒"); } // 字符缓冲流一次读写一个字符串 public static void method5(String srcString, String destString) throws IOException { long start = System.currentTimeMillis(); FileReader fr = new FileReader(srcString); FileWriter fw = new FileWriter(destString); BufferedReader br = new BufferedReader(fr); BufferedWriter bw = new BufferedWriter(fw); String line = null; while ((line = br.readLine()) != null) { bw.write(line); bw.newLine(); bw.flush(); } bw.close(); br.close(); long end = System.currentTimeMillis(); System.out.println("共耗时:" + (end - start) + "毫秒"); } }
要求:把ArrayList集合中的字符串数据存储到文本文件
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; /* * 要求:把ArrayList集合中的字符串数据存储到文本文件 * */ public class IntegerDemo { public static void main(String[] args) throws IOException { // 封装数据源(创建集合对象) ArrayList<String> array = new ArrayList<String>(); array.add("hello"); array.add("world"); array.add("java"); // 封装目的地 FileWriter fw = new FileWriter("E:\zikao\file\cs.txt"); BufferedWriter bw = new BufferedWriter(fw); // 遍历集合 for (String s : array) { // 写数据 bw.write(s); bw.newLine(); bw.flush(); } // 释放资源 bw.close(); fw.close(); } }
要求:从文本文件中读取数据到集合中,并遍历集合
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; /* * 要求:从文本文件中读取数据到集合中,并遍历集合 * */ public class IntegerDemo { public static void main(String[] args) throws IOException { // 封装数据源 FileReader fr = new FileReader("E:\zikao\file\cs.txt"); BufferedReader br = new BufferedReader(fr); // 封装目的地 ArrayList<String> array = new ArrayList<String>(); // 读取数据存储得到集合中 String line = null; while ((line = br.readLine()) != null) { array.add(line); } // 释放资源 br.close(); // 遍历集合 for (String s : array) { System.out.println(s); } } }
要求:一个文本文件中存储了多行,写一个程序实现随机访问一行
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.Random; /* * 要求:一个文本文件中存储了多行,写一个程序实现随机访问一行 * */ public class IntegerDemo { public static void main(String[] args) throws IOException { // 封装数据源 FileReader fr = new FileReader("E:\zikao\file\cs.txt"); BufferedReader br = new BufferedReader(fr); // 封装目的地 ArrayList<String> array = new ArrayList<String>(); // 读取数据存储得到集合中 String line = null; while ((line = br.readLine()) != null) { array.add(line); } // 释放资源 br.close(); // 随机产生一个索引 Random r = new Random(); int index = r.nextInt(array.size()); // 根据索引值获取一个值 String str = array.get(index); System.out.println(str); } }
LineNumberReader获取当前的行号
import java.io.FileReader; import java.io.IOException; import java.io.LineNumberReader; public class IntegerDemo { public static void main(String[] args) throws IOException { FileReader fr = new FileReader("E:\zikao\file\cs.txt"); LineNumberReader lnr = new LineNumberReader(fr); String line = null; while ((line = lnr.readLine()) != null) { System.out.println(lnr.getLineNumber() + ":" + line); } lnr.close(); } }