Java知识 21 流(Stream)、文件(file)、IO (文件操作和IO需要重新巩固)【多测师】
一、Java.io包中的流 支持多种格式:基本类型、对象、本地化字符集 二、读取控制台输入 Java的控制台输入由system.in完成 把system.in包装在一个BufferedReader对象中来创建一个字符流 创建BufferedReader的基本语法: BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedReader对象创建后 就可以使用read()方法从控制台读取一个字符 或者用readLine方法读取一个字符串 三、从BufferedReader对象读取字符用read()方法 语法: int read( ) throws IOException public class BRRead { public static void main(String args[]) throws IOException { char c; // 使用 System.in 创建 BufferedReader BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("输入字符, 按下 'q' 键退出。"); // 读取字符 do { c = (char) br.read(); System.out.println(c); } while (c != 'q'); } } 四、控制台输出 控制台输出由print()和println()完成 这些方法由类PrintStream定义 System.out是该类对象的一个引用 PrintStream继承了OutputStream类 并且实现了方法write() 基本语法:void write(int byteval) write方法不经常用 因为print和println用起来更加方便 //演示 System.out.write(). public class WriteDemo { public static void main(String args[]) { int b; b = 'A'; System.out.write(b); System.out.write('\n'); } } 五、IO流: 分为字符流和字节流 FileInputStream流 用于从文件读取数据 对象可以用new来创建 方式一:使用字符串类型文件名创建一个输入流对象来读取文件 InputStream f = new FileInputStream("C:/java/hello"); 方式二:使用文件对象创建一个输入流对象读取文件,先用file()方法创建文件对象 File f = new File("C:/java/hello"); InputStream out = new FileInputStream(f); FileOutputStream 这个类用来创建文件并向文件中写数据 有俩个构造方法可以用来创建FileOutputStream对象 方式一:使用字符串类型文件名创建一个输出流对象 OutputStream f = new FileOutputStream("C:/java/hello") 方式二:使用文件对象创建一个输出流来写文件,先用file()方法创建文件对象 File f = new File("C:/java/hello"); OutputStream f = new FileOutputStream(f); 写入流方法: close finalize write等等 六、文件和I/O的类:file class(类) fileReader class(类) fileWriter class(类) 七、Java中的目录 file类有俩个方法可创建文件夹 mkdir() 和mkdirs() 创建一个文件夹和它的所有父文件夹 在特定目录下面创建一个文件夹: public class CreateDir { public static void main(String args[]) { String dirname = "/tmp/user/java/bin"; File d = new File(dirname); // 现在创建目录 d.mkdirs(); } } 八、读取目录 public class DirList { public static void main(String args[]) { String dirname = "/tmp"; File f1 = new File(dirname); if (f1.isDirectory()) { System.out.println("目录 " + dirname); String s[] = f1.list(); for (int i = 0; i < s.length; i++) { File f = new File(dirname + "/" + s[i]); if (f.isDirectory()) { System.out.println(s[i] + " 是一个目录"); } else { System.out.println(s[i] + " 是一个文件"); } } } else { System.out.println(dirname + " 不是一个目录"); } } } 运行结果: 目录 /tmp .keystone_install_lock 是一个文件 com.apple.launchd.H3GTyDTgZ5 是一个目录 com.apple.launchd.zgbsYuhXAh 是一个目录 mysql.sock 是一个文件 mysql.sock.lock 是一个文件 user 是一个目录 九、删除目录或文件 public class DeleteFileDemo { public static void main(String args[]) { // 这里修改为自己的测试目录 File folder = new File("/tmp/java/"); deleteFolder(folder); } // 删除文件及目录 public static void deleteFolder(File folder) { File[] files = folder.listFiles(); if (files != null) { for (File f : files) { if (f.isDirectory()) { deleteFolder(f); } else { f.delete(); } } } folder.delete(); } }