一.File类
① java.io.file文件类以抽象的方式代表文件名和目录路径名。
② 该类主要用于文件和目录的创建、文件的查找和文件的删除等。
③ File对象代表磁盘中实际存在的文件和目录。
//File构造方法
File file = new File("file/cat.gif");
File file_2 = new File("D:/Java/IDEA_work/practice/Stream/file/cat.gif");
//file == file_2
if (file.exists()) {
if (file.isFile()) {
System.out.println("类型:文件");
System.out.println("文件名:" + file.getName());
System.out.println("是否可读:" + file.canRead());
System.out.println("是否可写:" + file.canWrite());
System.out.println("是否为隐藏文件:"+file.isHidden());
System.out.println("文件长度:" + file.length() + " byte");
} else {
System.out.println("类型:目录");
File[] files = file.listFiles();
for (int i = 0; i < Objects.requireNonNull(files).length; i++) {
File f = files[i];
System.out.println(f.getName());
}
}
System.out.println("路径:" + file.getPath());
System.out.println("绝对路径:" + file.getAbsolutePath());
System.out.println("父路径:" + file.getParent());
System.out.println("最后修改时间:" + new Date(file.lastModified()).toString());
System.out.println("是否是绝对路径:"+file.isAbsolute());
} else {
System.out.println(file.getAbsolutePath() + "不存在文件或目录");
}
二.IO流
三.字节流和字符流
1.什么是流
- 流是个抽象的概念,是对输入输出设备的抽象,输入流可以看作一个输入通道,输出流可以看作一个输出通道。
- 输入流是相对程序而言的,外部传入数据给程序需要借助输入流。
- 输出流是相对程序而言的,程序把数据传输到外部需要借助输出流。
字节流—传输过程中,传输数据的最基本单位是字节的流。
字符流—传输过程中,传输数据的最基本单位是字符的流。
2.字节流
- 字节流的类通常以stream结尾
常用的字节输入流主要有:
①InputStream
②FileInputStream
③FilterInputStream
③BufferedInputStream
BufferedInputStream带有缓冲的意思,普通的读是从硬盘里面读,而带有缓冲区之后,BufferedInputStream已经提前将数据封装到内存中,内存中操作数据要快,所以它的效率要要非缓冲的要高。
3.字符流
①Reader
②InputStreamReader
③FileReader
可以把FileInputStream中的字节数据转成根据字符编码方式转成字符数据流。
④BufferedReader
可以把字符输入流进行封装,将数据进行缓冲,提高读取效率。
四.文件输入输出
- FileInputStream ```java ///构造函数 //name - 接受文件的url public FileInputStream(String name) throws FileNotFoundException {
} //file - 文件File public FileInputStream(File file) throws FileNotFoundException {
}
//将数据写入b,从off开始len个字节 int read(byte[] b, int off, int len) -1 读取到结尾 //跳过len个字节 long skip(long len)
- FileOutputStream
- 文件不存在
- 创建新文件,文件夹不存在会抛出异常
- 文件存在
- 默认清空并写入文件
```java
///构造函数
//name - 输出文件的url
public FileOutputStream(String name) throws FileNotFoundException {
}
//file - 文件File
public FileOutputStream(File file) throws FileNotFoundException {
}
//将b写入文件,从off开始的len的字节
void write(byte[] b, int off, int len)
文件输入输出实例
//InputStream in
int len = -1;
//每次最多写入1024字节
byte[] bytes = new byte[1024];
while ((len = in.read(bytes)) != -1) {
out.write(bytes, 0, len);
}
//关闭流