File类
file类能新建、删除、重命名文件和目录,如果要访问文件内容本身,则需要使用输入输入流。
输入输出流
Java的输入流主要由InputStream和Reader作为基类,而输出流主要由OutputStream和Writer作为基类,他们都是一些抽象基类无法直接创建实例。JavaIO的40多个类都是由以上四个基类派生出来的。
InputStream和Reader分别有一个用于读取文件的输入流:FileInputStream和FileReader
字节流和字符流
,他们都是节点流——会直接和指定文件关联
字节流主要由InputStream和OutputStream作为基类,字符流主要由Writer和Reader作为基类
File file = new File("demo.dat");
FileInputStream fis
= new FileInputStream(file);//创建一个用于读取demo.dat文件的输入流
FileInputStream(String name):
创建用于读取给定的文件系统中的路径名name所指定的文件的FIS
例如
FileInputStream fis
//创建一个用于读取demo.dat文件的输入流
= new FileInputStream("demo");
1
字节流和字符流都是节点流,他们构造的时候传入的是一个物理节点(文件名或者文件目录)。可以使用处理流来包装节点流,处理流的两个优点:1.处理流输入输出操作简单,使用处理流效率更高。构造处理流时传入的是一个节点流。
区别处理流和节点流:只要流的构造器参数不是一个物理节点,而是已经存在的流,那么这种流就是处理流,而所有节点流都是以物理IO节点作为构造器参数的。
2转换流
用于实现将字节流转换成字符流:InputStreamReader和OutputStreamWriter
重定向标准输入输出
Java的标准输入输出分别通过system.in和System.out来代表,默认情况下他们分别代表键盘和显示器
system类里提供了如下三个重定向标准输入输出方法:
static void setErr (PrintStream err); static void setIn (InputStream in); static void setOut (PrintStream out);
用法举例
try(PrintStream ps = new PrintSream (new FileOutputStream ("out.txt"))) { System.setOut (ps); } catch (IOException ex) { ex.printStackTrace(); }