输入与输出,流
-
了解输入输出的概念
Scanner 输入。
System.out.println(); 输出在I/O中
input 输入
output 输出 -
使用File类操作文件或者目录
文件:相关记录或者存放在一起的数据的集合
java.io.File类去操作文件
- boolean exists();判断是否存在
- boolean isFile();判断是否是文件
- boolean isDirectory();判断是否是目录
- String getPath()获取相对路径
- String getAbsolutePath();获取绝对路径
- String getName()获取文件名称
- Long length();获取文件长度(大小)
- boolean delete();删除文件或目录
- boolean createNewFile();创建新文件
- File[] listFile();获取当前目录下的所有文件/文件夹 返回对象数组
- String[] list();获取当前目录下的所有文件名称。
-
理解流的概念及分类
-
会使用字节流读写文本文件
InputStream 实现类 FileInputStream
outputStream 实现类 FileOutPutStream
-
指定数据源(数据源必须存在)
-
指定目的地(目的地的文件如果不存在,则会自动创建)
-
读取后写入目的地
FileinputStream
int read();读取一个字节
int read(byte[] b);读取到字节数组中
int read(byte[] b,int index, int len);指定读取的字节长度
FileOutPutStream
int write();写出一个字节
int write(byte[] b);从字节数组中拿出数据写入文件中
int write(byte[] b,int index,int len);指定写出去的数据长度
-
关流 .close();
补充:是否追加true追加进去。FileOutputStream os = new FileOutputStream(String path,boolean append);
-
-
会使用字符流读写文本文件
Reader 子类——> FileReader
Writer 子类——> FileWriter
-
指定数据源(数据源必须存在)
-
指定目的地(目的地的文件如果不存在,则会自动创建)
-
读取后写入目的地
FileReader
int read();读取字符
int read(char[] c);读取到字节数组中
int read(char[] c,int index, int len);指定读取的字节长度
FileWriter
int write();写出一个字节
int write(char[] c);从字节数组中拿出数据写入文件中
int write(char[] c,int index,int len);指定写出去的数据长度
-
关流 .close();
补充:是否追加? true追加进去。如果不关流,数据不会自动写入目的地,如果想要强制写入,实现刷新功能flush(); -
字符流:BufferedReader BufferedWriter
高校缓冲字符输入流:String readLine();读取一行
高校缓冲字符输出流:void newLine();换行
字节流:BufferedInputStream BufferedOutputStream
-
-
[commons-io(apache子项目)的使用]
apache(阿帕奇基金会)
commons是apache基金会下的一个子项目(它里面都是一些通用的代码)例如:文件上传 文件复制 连接池 加密处理。。。
io是commons子项目下的一个组件,里面写的都是通用的IO操作
Commons-codec
Commons-fileupload
Commons-pool
Commons-dbcp
总结:
基类:InputStream OutputStream和Reader Writer
基础子类(节点流):FileInputStream FileOutputStream和FileReader FileWriter
处理流:BufferedInputStream BufferedOutputStream和BufferedReader BufferedWriter
带Stream 的是字节流,不带Stream的是字符流
带File的是节点流,不带File的是处理流
节点流是基础流/低级流,是直接连接数据源的,输入输出的效率较低
处理流是节点流的包装流,不仅可以消除不同节点流的实现差异,还提供了方便的方法来进行输入和输出,
处理流采用修饰器设计模式,不与数据源直接相连。
ObjectInputStream和ObjectOutputStream可以完成对对象的序列化。
转换流:InputStreamReader和OutputStreamWriter:可以将字节流转换成字符流,有个构造方法可以指定编码格式(utf-8,gbk等)
打印流:printStream和printWriter。打印流只有输出流没有输入流。