Java基础第二十六天总结——IO流

目录:

一、File类的使用

二、IO流原理及流的分类

三、节点流(或文件流)

四、缓冲流

五、转换流

六、标准输入、输出流

七、打印流

八、数据流

九、对象流

十、随机存取文件流

十一、NIO.2中Path、Paths、File类的使用

 

/*---------------------分割线-----------------------*/

一、File类的使用

File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。

 

File对象可以作为参数传递给流的构造器
public File(String pathname)
以pathname为路径创建File对象,可以是绝对路径或者相对路径
绝对路径:是一个固定的路径,从盘符开始
相对路径:是相对于某个位置开始
public File(String parent,String child)
以parent为父路径,child为子路径创建File对象。
public File(File parent,String child)
根据一个父File对象和子文件路径创建File对象

 

路径分隔符:

 windows和DOS系统默认使用“\”来表示
 UNIX和URL使用“/”来表示

 

常用方法:

File类的获取功能
 public String getAbsolutePath():获取绝对路径
 public String getPath() :获取路径
 public String getName() :获取名称
 public String getParent():获取上层文件目录路径。若无,返回null
 public long length() :获取文件长度(即:字节数)。不能获取目录的长度。
 public long lastModified() :获取最后一次的修改时间,毫秒值
 public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组
 public File[] listFiles() :获取指定目录下的所有文件或者文件目录的File数组
 
File类的重命名功能
 public boolean renameTo(File dest):把文件重命名为指定的文件路径

 

File类的判断功能
 public boolean isDirectory():判断是否是文件目录
 public boolean isFile() :判断是否是文件
 public boolean exists() :判断是否存在
 public boolean canRead() :判断是否可读
 public boolean canWrite() :判断是否可写
 public boolean isHidden() :判断是否隐藏

 

File类的创建功能
 public boolean createNewFile() :创建文件。若文件存在,则不创建,返回false
 public boolean mkdir() :创建文件目录。如果此文件目录存在,就不创建了。
如果此文件目录的上层目录不存在,也不创建。
 public boolean mkdirs() :创建文件目录。如果上层文件目录不存在,一并创建
注意事项:如果你创建文件或者文件目录没有写盘符路径,那么,默认在项目
路径下。

 

File类的删除功能
 public boolean delete():删除文件或者文件夹
删除注意事项:
Java中的删除不走回收站。
要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录

 

二、IO流原理及流的分类

 

 

流的分类
按操作数据单位不同分为:字节流(8 bit),字符流(16 bit)
按数据流的流向不同分为:输入流,输出流
按流的角色的不同分为:节点流,处理流

 

 

 

 

InputStream 和 Reader 是所有输入流的基类。
OutputStream & Writer
OutputStream 和 Writer 也非常相似:
 void write(int b/int c);
 void write(byte[] b/char[] cbuf);
 void write(byte[] b/char[] buff, int off, int len);
 void flush();
 void close(); 需要先刷新,再关闭此流

 

三、节点流(或文件流)

在写入一个文件时,如果使用构造器FileOutputStream(file),则目录下有同名文
件将被覆盖。
 如果使用构造器FileOutputStream(file,true),则目录下的同名文件不会被覆盖,
在文件内容末尾追加内容。
在读取文件时,必须保证该文件已存在,否则报异常

 

四、缓冲流

缓冲流要“套接”在相应的节点流之上,根据数据操作单位可以把缓冲流分为:
BufferedInputStream 和 BufferedOutputStream
BufferedReader 和 BufferedWriter

 

 

五、转换流

Java API提供了两个转换流
 InputStreamReader:将InputStream转换为Reader
 OutputStreamWriter:将Writer转换为OutputStream
 

 

 

六、标准输入、输出流

System.in和System.out分别代表了系统标准的输入和输出设备

 

七、打印流

实现将基本数据类型的数据格式转化为字符串输出
打印流:PrintStream和PrintWriter

 

八、数据流

为了方便地操作Java语言的基本数据类型和String的数据,可以使用数据流。
数据流有两个类:(用于读取和写出基本数据类型、String类的数据)
 DataInputStream 和 DataOutputStream
 分别“套接”在 InputStream 和 OutputStream 子类的流上
DataInputStream中的方法
boolean readBoolean()
byte readByte()
char readChar()
float readFloat()
double readDouble()
short readShort()
long readLong()
int readInt()
String readUTF() void readFully(byte[] b)
DataOutputStream中的方法
 将上述的方法的read改为相应的write即可。

 

九、对象流

ObjectInputStream和OjbectOutputSteam
 用于存储和读取基本数据类型数据或对象的处理流。它的强大之处就是可以把Java中的对象写入到数据源中,也能把对象从数据源中还原回来。
ObjectOutputStream和ObjectInputStream不能序列化static和transient修饰的成员变量

 

十、随机存取文件流

long getFilePointer():获取文件记录指针的当前位置
void seek(long pos):将文件记录指针定位到 pos 位置

 

流的基本应用小结:

流是用来处理数据的。
 处理数据时,一定要先明确数据源,与数据目的地
 数据源可以是文件,可以是键盘。
 数据目的地可以是文件、显示器或者其他设备。
 而流只是在帮助数据进行传输,并对传输的数据进行处理,比如过滤处理、转换处理等
 
十一、NIO.2中Path、Paths、Files类的使用
NIO将以更加高效的方式进行文件的读写操作。
Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。
 
Paths 类提供的静态 get() 方法用来获取 Path 对象:
static Path get(String first, String … more) : 用于将多个字符串串连成路径
static Path get(URI uri): 返回指定uri对应的Path路径
 
 
 
 
 
posted @ 2019-12-18 21:55  java_取名南  阅读(252)  评论(0编辑  收藏  举报