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('
');
    }
}

五、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();
  }
}
原文地址:https://www.cnblogs.com/xiaoshubass/p/13110923.html