复习{
File的对文件夹的操作,对文件的操作;
1.遍历文件夹
2.删除文件夹(为null的文件夹,不为null的文件)
递归方式来删除: 自己调用自己,针对方法
注意 一定要设置方法方法的出口 ,return
处理文件的I/O流: 可以完成对文件复制操作
FileInputStream: 读取文件的内容,byte[] b ,
read();
read(byte[] b);
read(byte[] b , int off , int len);
close();
FileOutputStream: 在通过java程序通过字节流 将内存的数据写入到指定文件中
write(int a );
write(byte[] b);
write(byte[] b, int off , int len);
flush();
close();
new FileInputStream(new File("路径"));
new FileOutputStream(new File("路径"));
技巧: 搞清楚方向感
Java.net.URL;
URL url = new URL("https://sfsdfsdfsldfsdlfk");
URLConnection c = url.openConnection();
InputStream ips = c.getInputStream();
序列化 和 反序列化:
什么是序列化 ?
将java内存中的 对象数据 ,通过ObjectOutputStream 写入到物理文件中的
过程,就是序列化
什么是反序列化 ?
将物理文件中的 数据,通过ObjectInputStream 读取到java内存中的过程
就是反序列化;
ObjectOutputStream 序列化
writeObject(Object obj);
flush();
close();
ObjectInputStream 反序列化
readObject();
new ObjectOutputStream(new FileOutputStream(new File()));
new ObjectInputStream(new FileInputStream(new File()));
PipedInputStream 管道流
PipedOutputStream 管道流
--------------------------------------------------------------------------------}
字符流: 操作的char类型 2字节
字节流: 操作的byte类型 1字节
它们两个 就差在 数据类型上;
Reader: 抽象类
字符流的输入流:
方法:
read();
read(char[] cbuf)
read(char[] cbuf, int off, int len);
skip(long n);
close();
常用子类:
|-- CharArrayReader
|-- BufferedReader
|-- InputStreamReader
Writer: 抽象类
字符流的输出流:
方法:
append(char c); StringBuffer,StringBuilder中见过,字符的拼接
close();
flush();
write(char[] cbuf);
write(char[] cbuf, int off, int len)
write(int c);
*** write(String str);
write(String str, int off, int len);
常用子类:
入门级: CharArrayWriter:
BufferedWriter:
OutputStreamWriter:
PrintWriter:
-----------------------------------------------------------------------------------
BufferedReader:
构造器:
new BufferedReader(Reader reader);
方法:
readLine();
read();
read(char[] cbuf, int off, int len)
skip();
close();
BufferedWriter:
构造器:
new BufferedWriter(Writer writer);
write(String str);
newLine();
write(int a);
flush();
close();
InputStreamReader:
new InputStreamReader(InputStream ips);
OutputStreamWriter:
new OutputStreamWriter(OutputStream ops);
-----------------------------------------------------------------------------------------
PrintWriter: 打印流
但是我们的输出语句中 用的 打印流 是 PrintStream 是字节流的
构造方法:
PrintWriter(File file);
PrintWriter(OutputStream out);
方法:
close();
flush();
三组:
print(...); 不换行打印
println(...); 换行打印
write(...); 写出
append(...); 追加
==============================================================================================
高级流: 了解
NIO: (Non-blocking I/O)非阻塞I/O
也叫(New-IO) 新IO
要比 普通io 传输效率更高:
java.nio.Buffer
三大核心:
Buffer: 缓冲区 抽象类
|-- ByteBuffer , ShortBuffer, IntBuffer, LongBuffer, CharBuffer, FloatBuffer,DoubleBuffer
以上7个类 不能new 对象
方法:
capacity(); 容量
clear();清除
flip(); 切换模式
position(); 位置,存储到什么位置
limit(); 这个缓冲区的最大存储容量
ByteBuffer:
allocate(int capacity); 非直接缓冲区 ---> 堆内 内能
allocateDirect(int capacity); 直接缓冲区 ---> 堆外内存 效率高
Channel: 通道
通过FileInputStream(); FileOutputStream(); 获取通道
FileChannel channel = getChannel();
channel.read(buffer);
buffer.flip(); 缓冲区 必须自己切换一下 读写 模式 ,这样你的通道才能传输数据
channel.writer(buffer);
Selector: 选择器 , 监听器
监听多个 Channel通道的
============================================================================================