IO文件读写

File ->内存对象,表示文件或目录,和本地有无这个文件无关
listFiles()
listFiles(Filefilter-accept)
getName();

isFile();
isDirectory();
文件的读写:
对文件进行【随机】读写的类不算io,io都是单向的
RandomAccessFile–可读可写–使用场景:【文件复制、文件加密】
实例化- >new
new(File\fileName,“rw”);
ApI-以字节为单位

write3
write(b) ->写入指定的int的低八位,单字节
write(byte[]) ->写入指定的byte数组的全部字节,返回读取的有效长度
write(byte[],offset,len) ->截取一部分字节写入到文件 off开始len个字节
write 8种基本数据类型
注意:写到文件中的是字节,看到的文件内容是字符
字节-> 字符 需要编码 String word =new String(bs)
解码buys[] bs=word.getBytes();

read 3 ->返回-1都表示读到文件的末尾
int read() ->读一个字节,存到int类型的低八位
int read(byte[]) ->读bs.length个字节,并且存入到bs中
int read(byte[],offset,len) ->读len个字节,并且再bs中off位置返回读取出来的有效字节个数
read 8种基本数据类型
随机:指定指针位置 pointer
1.获得当前指针位置 getFilepointer
2.跳过对应的则结束 ->顺序 skipBytes(int)
3.跳转到指定的指针位置 seek(int)
从而实现 读写同时操作 读写都会移动指针位置
long index =rf.getFilePointer();//获得当前指针位置
rf.seek(1);//跳转到index=1的字节
rf.skipBytes(2)//跳过两个字节

Input: 输入/读
Output 输出/写
字节为单位:InpueStream/OutputStream 字节流
FileInputStream(file)
FileOutputStream(file,boolean) true追加内容 false 清空然后写入新内容 默认为false

缓冲流:
缓冲区:添加缓冲区的目的就是为了提高效率
访问磁盘空间和访问内存,访问内存的效率更高
访问磁盘空间:
文件读写
访问数据库
B/S: 浏览器/服务器 C/S: 客户端/服务端
字节缓冲流:
BufferedInputStream
BufferedOutputStream
缓冲流是通过节点流包装出来的
InputStream is=new FileInputStream("");
BufferedInputStream bis=new BufferedInputStream(is);
字节流:字节为单位,不是用来读写可视内容的
通常用来复制文件,又因为缓冲流效率高,多以复制文件用缓冲流
底层流用来生成其他高级流

字符流: 字符为单位
Reader/Writer
InputStreamReader(InputStream)
int read() ->读一个字符
int read(char[]) ->读char.length个字符,并且存入到char[]种
int read(char[],offset,len) ->读len个字符,并且再char[]种off位置上返回读取出来的有效字符个数
OutputStreamWriter(OutputStream)
write(int) ->写入单个字符
write(char[]) ->写入指定的char数组的全部字符,返回读取的有效长度
write(char[],offset,len) ->截取一部分字符写入到文件 off开始len个字节
flush();/close(); 刷新/关系缓冲区

缓冲流
BufferedReader(Reader(inputStream(file)))
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(“a.txt”)))
readLine();
PriterWriter(Writer(OutputStream(File))) 能指定编码,能追加写入
PriterWriter(OutputStream(File)) 不能指定编码,能追加写入
PriterWriter(File) 不能指定编码,只能清空文件写入
print()
println()

ObjectInputStream/ObjectOutputStream --操作对象,字节为单位
写:减肥对象转换为字节(序列化),写入文件
读:肚子姐,将字节转换为对象(反序列化)
操作对象
使用场景:
深克隆:复制 对象+引用
浅克隆:object.clone();
Serializable:可序列化的 --空接口
序列化:将对象转换为字节,要求对象必须是可序列化的
目的:仅用于表示可序列化的语句
transient,序列化时会自动忽略这个属性
seriaVersionID->类的版本号,默认情况下,通常改写类信息会修改版本号

你可能感兴趣的:(IO文件读写)