8.1 控制台输入输出
public static void main(String[] args) throws IOException {String c;BufferedReader br = new BufferedReader(new InputStreamReader(System.in));System.out.println("输入字符:");do {c = br.readLine();System.out.println(c);} while (c != "q");}运行结果:输入字符:runoobrunoobrunrunqq
8.2 IO流
8.3 字节流
8.3.1 FileInputStream
该流用于从文件读取数据,它的对象可以用关键字 new 来创建。
// 可以使用字符串类型的文件名来创建一个输入流对象来读取文件InputStream is = new FileInputStream("E://a.txt");// 也可以使用一个文件对象来创建一个输入流对象来读取文件。我们首先得使用 File() 方法来创建一个文件对象File file = new File("E://a.txt");InputStream in = new FileInputStream(file);int len = 0;while ((len = fis.read()) != -1){System.out.println(len); // 228 189 160 229 165 189}byte[] bytes = new byte[1024];int len = 0;while ((len = fis.read(bytes)) != -1){System.out.println(new String(bytes,0,len)); // 你好...}fis.close();
8.3.2 FileOutputStream
该类用来创建一个文件并向文件中写数据。如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。
// 使用字符串类型的文件名来创建一个输出流对象OutputStream os = new FileOutputStream("E://b.txt");// 使用一个文件对象来创建一个输出流来写文件。我们首先得使用File()方法来创建一个文件对象File file = new File("E://a.txt");OutputStream os = new FileOutputStream(file);os.write(97); // abyte[] bytes = {65,66,67,68,69};os.write(bytes); // ABCDEos.write("你好".getBytes()); // 你好os.close();
8.4 字符流
8.3.1 FileReader
FileReader fr = new FileReader("E://a.txt");char[] chars = new char[1024];int len = 0;while ((len = fr.read(chars)) != -1){System.out.println(new String(chars,0,len)); // 你好...}fr.close();
8.3.2 FileWriter
FileWriter fw = new FileWriter("E://a.txt");FileWriter fw = new FileWriter("E://a.txt",true); // 续写开关 true:不会创建新的文件覆盖源文件,可以续写char[] chars = {'a','b','c','d'};fw.write(chars); // abcdfw.write("你好"); // abcd你好fw.flush();fw.close();
8.3 缓冲流
// 写入文件BufferedWriter out = new BufferedWriter(new FileWriter("E://runoob.txt"));out.write("菜鸟教程");out.close();// 读取文件BufferedReader br = new BufferedReader(new FileReader("E://runoob.txt"));String str;while ((str = br.readLine()) != null){System.out.println(str); // 菜鸟教程}
