下面就用几个简单的代码案例来熟悉File类里面函数的用法:
public class IODemo1 {
public static void main(String[] args) throws IOException {
File f = new File("./test2.txt");
//File f = new File("C:/User/1/test.txt");
System.out.println(f.getParent());
System.out.println(f.getName());
System.out.println(f.getPath());
System.out.println(f.getAbsolutePath());
System.out.println(f.getCanonicalPath());//对于绝对路径的简化
}
}
运行结果:
public class IODemo2 {
public static void main(String[] args) throws IOException {
File f = new File("./test.txt");
System.out.println(f.exists());// 该文件是否存在
System.out.println(f.isFile());// 是否有该文件
System.out.println(f.isDirectory());// 是否有目录
boolean ret = f.createNewFile();//这个是用来创建文件的
System.out.println(ret);
}
}
运行结果:为 true true false false
这个运行结果是已经创建了 test.txt这个文件了。
public class IODemo3 {
public static void main(String[] args) {
File f = new File("./test.txt");//jvm 退出是才删除
f.deleteOnExit();
}
}
public class IODemo4 {
public static void main(String[] args) {
File f = new File(".");
File[] list = f.listFiles();// . 表示当前路径 返回 File 对象代表的目录
下的所有文件,以 File 对象表示
System.out.println(Arrays.toString(list));
}
}
public class IODemo5 {
public static void main(String[] args) {
File f = new File("./aaa/bbb/ccc");
boolean ret = f.mkdirs();// 与mkdirs的区别 如果上级没有就会创建
// mkdir 如果上级没有这会报错
System.out.println(ret);
}
}
public static void main(String[] args) throws IOException {
//进行文件改名,也可以视为我们平时的剪切、粘贴操作
File src = new File("./test2.txt");
//src.createNewFile();
File dest = new File("./aaa/test2.txt");
src.renameTo(dest);
}
}
上面就是一些常用File类里面函数的用法,并且每个代码旁边有注释可以去看看。
InputStream和 OutputStream是以字节为单位进行读写,一次最少读写一个字节,而Reader和Writer是以字符单位进行读写。(这几个类的使用非常相似,会用一个,其他也就会了)
1. InputStream简单用法
public class IODemo7 {
public static void main(String[] args) throws IOException {
try (InputStream inputStream = new FileInputStream("./test.txt")){
while(true){
byte[] buffer = new byte[1024];
int n = inputStream.read(buffer);
if(n == -1){
break;
}
for(int i = 0; i < n; i++){
System.out.printf("%x ", buffer[i]);
}
}
}
}
}
这里使用的是try-with,它会自动在我们使用完这个对象自动释放,避免了程序猿忘记释放而导致出现大问题。
2. OutputStream简单用法
public class IODemo9 {
public static void main(String[] args) {
// 如果后面不跟true 下次打开就会重置里面的,如果跟了true只会在后面增加
// 以字节为单位惊醒读写,一次最少读写一个字节
try(OutputStream outputStream = new FileOutputStream("./test.txt",true)){
byte[] buffer = new byte[]{97,98,99,100};
outputStream.write(buffer);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
这里注意了后面加了一个true,加了跟没加有很大的区别,加上true的话打开该文本是不会把之前的给清空,继续往上面增加,加不加true,也是看场景是否需要而加上的。