import java.io.*; public class JavaReadFiles { public static void main(String[] args) throws IOException { /** * 关于FileReader * 1、用来读取字符文件的便捷类。 * 2、此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。 * 3、要自己指定这些值,可以先在 FileInputStream 上构造一个 InputStreamReader。 * 4、FileReader 用于读取字符流。要读取原始字节流,请考虑使用 FileInputStream。 */ FileReader fr = new FileReader("ming.txt"); char[] buffer = new char[1024]; int ch = 0; while ((ch = fr.read()) != -1) { System.out.print((char) ch); } /** InputStreamReader 是字节流通向字符流的桥梁: * * 它使用指定的 charset 读取字节并将其解码为字符。 * 它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。 * 每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。 * 要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。 * 为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如: * BufferedReader in * = new BufferedReader(new InputStreamReader(System.in)); */ InputStreamReader isr = new InputStreamReader(new FileInputStream("ming.txt")); while ((ch = isr.read()) != -1) { System.out.print((char) ch); } BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt"))); String data = null; while ((data = br.readLine()) != null) { System.out.println(data); } FileWriter fw = new FileWriter("hello.txt"); String s = "hello world"; fw.write(s, 0, s.length()); fw.flush(); OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("hello2.txt")); osw.write(s, 0, s.length()); osw.flush(); PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("hello3.txt")), true); pw.println(s); fr.close(); isr.close(); br.close(); fw.close(); osw.close(); pw.close(); } }