Java--文件操作和IO
File类概述:
File 类是 Java 中用于表示文件和目录路径名的抽象表示形式。它允许应用程序对文件和目录进行各种操作,如创建、删除、重命名以及获取文件属性等
.代表当前目录
..代表父目录
构造方法:
1.File(String pathname):根据文件路径创建File实例,路径可以是绝对路径和相对路径。
2.File(File parent,String Child):根据父目录加孩子文件路径创建File实例。
3.File(String parent,String child):根据父目录和孩子文件路径创建File实例,父目录用路径表示。
import java.io.File;public class Demo1 {public static void main(String[] args) {File file = new File("test.txt");File file2 = new File(file,"test2.txt");File file3 = new File("d:/","test3.txt");}
}
相关方法:
getParent() :
获取 file 对象的父目录路径。返回值类型为String
File file3 = new File("d:/","test3.txt");String test = file3.getParent();System.out.println(test);
getName:
获取 file 对象的纯文件名称。
File file = new File("d:/","test.txt");String name = file.getName();System.out.println(name);
getPath() 和 getAbsolutePath()
获取 file 对象的 文件路径 和 绝对路径
File file = new File("d:/","test.txt");String test1 = file.getPath();String test2 = file.getAbsolutePath();System.out.println(test1);System.out.println(test2);
getCanonicalPath()
(可能抛出IOexception异常):返回修饰过的绝对路径。
File file = new File("d:/../test.txt");String test = file.getCanonicalPath();System.out.println(test);
由于d:/../test.txt 就相当于是 d:/test.txt ,这个方法会把冗余的路径优化掉,返回优化后的路径。
三个路径的区别:
getPath() 直接返回构造时传入的路径
getAbsoulatePath() 返回文件的绝对路径
getCanonicalPath() 返回优化后的路径
exists():
返回文件是否真实存在:
File file = new File("d:/test");Boolean flg = file.exists();System.out.println(flg);
isDirectory() 和 isFile()
判断 File 对象是否是一个目录/一个文件:
File file = new File("d:/test");Boolean flg = file.isDirectory();Boolean flg2 = file.isFile();System.out.println(flg);System.out.println(flg2);
createNewFile()
根据File对象,创建一个File文件,成功后返回true
File file = new File("d:/test.txt");Boolean flg = file.createNewFile();System.out.println(flg);
创建之后再次运行就变成了false
delete()
根据File对象,删除对应的文件,删除之后返回true
File file = new File("d:/test.txt");Boolean flg = file.delete();System.out.println(flg);
deleteOnExit()
根据File对象删除对应文件,不过是等JVM运行结束之后才进行删除
File file = new File("d:/test");file.deleteOnExit();
list()
返回File对象目录下的所有文件名,返回类型为 String[]
File file = new File("d:Demo");for (String fileName:file.list()) {System.out.println(fileName);}
listFiles()
返回File对象目录下的所有文件,返回类型为 File[]
File file = new File("d:/Demo");for (File fileN:file.listFiles()) {System.out.println(fileN.getName());}
mkdir()
创建File对象所代表的目录(单级目录),如果父目录不存在则创建失败
File file = new File("d:Demo");file.mkdir();
mkdirs()
创建File对象所代表的目录(多级目录),可以创建中间目录
File file = new File("d:Demo/Demo1/Demo2");file.mkdirs();
rename To(File desk)
进行文件改名操作:
File file = new File("d:Demo");File file1 = new File("d:test");file.renameTo(file1);
变为:
canRead() 和 canWrite()
判断用户是否有可读/可写操作:
File file = new File("d:/test");Boolean flg = file.canRead();Boolean flg2 = file.canWrite();System.out.println(flg);System.out.println(flg2);
InputStream
InputStream 是 Java 中用于读取字节数据的抽象基类,专注于数据的顺序读取操作
方法:
read()
读取一个字节的数据,如果读完了返回-1
read(byte[] b)
最多读取b.length字节的数据到b 中,返回实际读到的数量;-1代表读完了
read(byte[] b, int off, int len)
最多读取 len-off 字节的数据到 b 中,从off开始,返回实际读到的数量;-1代表以及读完了
close()
关闭字节流
InputStream 只是⼀个抽象类,要使⽤还需要具体的实现类。此处使用:FileInputStream
FileInputStream
构造方法:
FileInputStream(File file) 利用 File 文件构造输入流
FileInputStream(String name) 利用文件路径构造输入流
OutputStream
write(int b) 写⼊要给字节的数据
write(byte[] b) 将b这个字符数组中的数据全部写入
write(byte[] b, int off, int len) 将b这个字符数组中从off开始的 数据写⼊,⼀共写len个
close() 关闭字节流
flush() 将数据写入缓冲区,等 flush()刷新一下,就会成功写入