IO
数据流动的方向 读数据(input) 写数据(output)
文件流 字符流 数据流 对象流 网络流。。。
1.文件
一种电脑的存储形式
.txt .doc .ppt .mp4...
文件夹
File-->与电脑上的文件或文件夹产生一一对应的映射关系
File是一个类
1)java.io包中
2)文件或目录路径名的抽象表示形式
3)File是内存中的一个对象<--映射-->硬盘上的文件或文件夹
4)File类中的常用方法
canRead() canWrite() isHidden() isFile() long = length()
isDirectory()
getAbsolutePath() 获取文件的绝对路径
getName() 获取文件名
createFile() 创建新的文件
mkdir 创建文件夹 外层没有 不能创建
mkdirs 创建新的文件夹 外层没有 可以自动创建
getParent() 获取当前file的父亲file名字
getParentFile() 获取当前file的父亲file对象
String[] names = list() 获取当前file的所有儿子的名字
File[] files = listFiles() 获取当前file的所有儿子对象
数组对象为空 file是一个文件
数值对象不为空 file是一个文件夹
数组对象长度不为0 file是个不为空的文件夹
遍历当前file的所有父目录
File file = new File(pathname);
File pfile = file.getParentFile();
while(pfile!=null){
System.out.println(pfile.getAbsolutePath());
pfile = pfile.getParentFile();
}
2.文件流
文件流按照读取或写入的单位(字节数)大小来区分
字节型文件流(1字节)
FileInputStream/FileOutputStream
字符型文件流(2字节---1字符)
FileReader/FileWriter
字节型文件输入流
FileInputStream
1)java.io包
2)继承InputStream
3)创建对象
FileInputStream(File file)
FileInputStream(String pathname)
4)常用方法
int code = read(); 每次从流管道中读取一个字节
int count = read(byte[] b);每次从流管道中读取若干字节,存入数组内,返回有效元素个数
int count= available(); 返回流管道中还有多少缓存字节数
long = skip(long n); 跳过几个字节读取 返回跳过的个数
close();关闭流管道---必须要做,建议放在finally里
字节型文件输出流
FileOutputStream
1) java.io
2)继承OutputStream类
3)创建对象
FileOutputStream(File file);
FileOutputStream(File,Boolean);
FileOutputStream(String);
FileOutputStream(String,Boolean);
4)常用方法
write(iint code);将给定code对应的字符写入文件
write(buye[]);将数组中的全部字节写入文件
flush();将管道内的字节推入文件(刷新)
close();关闭流管道
字符型文件流---只能操作纯文本
FileReader/FileWriter 用法和字节型文件流没有区别
3.缓冲流
在流管道内增加缓存的数据,使读取数据更流畅
BufferedInputStream/BufferedOutputStream
构建方式:使用低级流创建
使用方法与低级流一致
BufferedReader String = readLine();
BufferedWriter
write(String);
newLine();
总结
文件流
低级
字节型 FileInputStream FileOutputStream
字符型 FileReader FileWriter
缓冲
字节型 BufferedInputStream BufferedOutputStream
字符型 BufferedReader BufferedWriter
数组流
byte数组 ByteArrayInputStream ByteArrayOutputStream
char数组 CharArrayReader CharArrayWriter
数据流 DataInputStream DataOutputStream
对象流 ObjectInputStream ObjectOutputStream
下篇内容
线程基础