I/O相关 输入/输出 流(数据流动)
数据流动的方向 读数据(Input) 写数据(输出Output)
文件流 字符流 数据流 对象流 网络流….
File是一个类
1.java.io包中
2.文件或目录路径名的抽象表示形式
3.FIle与真实硬盘中的文件或文件夹 不是一个东西
FIle是在内存中的一个对象 “映射” 硬盘上的文件或文件夹
4.File类中的常用的方法
canRead() canWrite() isHidden() isFile() isDirectory()
length() 获取文件中字节的个数
lastModified() 获取文件最后修改时间 —-》 毫秒值
getAbsolutePath() 获取文件的绝对路径
getName 获取文件的名字
delete() 删除文件或文件夹 // 只能删除空的文件夹,不能删除有内容的文件夹
绝对路径 <—-> 相对路径
绝对路径可以通过完整的字符串 定位盘符 文件夹 文件
相对路径没有盘符的写法 当前工程(项目)所在的位置找寻
*由于我们是写给客户的就推荐用 相对路径
*绝对路径 有 C:// 盘符
boolean = createNewFIle() 创建新的文件
boolean = mkdir 创建新的文件夹 一级
boolean = mkdirs 创建新的文件夹 多级
String pname = getParent() 获取当前file的父亲file名字
FIle file = getParentFIle() 获取当前file的父亲file对象
// 有了对象就可以根据这文件对象 找到路径 getAbsolutePath()
///////////////////////////////////////字符流////////////////////////////////////
字符流针对的是内容
=======
创建输入 文件不存在 FIleNotFoundException
创建输出 文件不存在 会自动创建
所以放的位置也要注意是否在 异常内
FileInputStream FIleOutputStream
=======
使用字节对文件进行读取:
FileInputStream
read()
read(byte[])
available()
skip(long n) 跳过几个字节读取
close() 关闭的是流通道,不是file对象
最好放在finally里 注意代码的健壮性 判断严谨
使用字节对文件进行写入
FileOutputStream
String 边 byte 数组 很重要
write(int code); 将code对应的字符写入文件
write(byte[])
flush() 刷新
close()
////////////////////// 出现乱码就改文件的格式,改成idea的格式,这样简单点
String s = “你我他”
byte[] = s.getButes(“UTF-8”)
new String(byte[],”UTF-8”) // 可以有这两种方式改变格式
///////////////////////
字符流:FileReader/FileWriter
/////////////////////////////缓冲流/////////////////////////
在流管道内增加缓存的数据
让我们使用流读取的文字更加的流畅
高级流 —-》创建通过低级流
BufferedInputStream/BufferedOutputStream
BufferedReader/BufferedWriter
都是在file。。。。 基础上的
================== String拆分后是 数组 String[] value = s.split() ==================
文件流
低级
字节型 FileInputStream FIleOutputStream
字符型 fileReader FileWriter
缓冲
字节型 BufferedInputStream BufferOutputStream
字符型 BufferedReader BufferedWriter
数组流
byte数组 ByteArrayInputStream ByteArrayOutputStram
char数组 CharArrarReader CharArrayWriter
对象流
ObjectInputStream ObjectOutputStream
对象的序列化/反序列化
序列化:对象的那个类要 有 接口 implements Serializable
反序列化:会报错要有这个字段:private long serialVersionUID = 8297689626700606849L;
1ializable