(通用之学习)File类的那些事儿

File类

是文件和目录(文件夹)路径名的抽象表示。

创建一个文件

假设在D盘下创建一个.txt后缀的文本文件,需要用到的方法是createNewFile(),返回值为布尔类型,如果之前不存在这样一个文件,则新创建一个文件并返回true,否则返回false。

File file = new File("D:\\a.txt"); System.out.println(file.createNewFile()?"true":"false");
创建一个文件夹

假设在D盘下创建一个文件夹,需要用到的方法是mkdir(),返回值为布尔类型。如果之前不存在这样一个文件夹,则新创建一个并返回true,否则返回false。

File dir = new File("D:\\IO");
System.out.println(dir.mkdir()?"true":"false");
删除文件或文件夹

假设需要删除某个文件或文件夹,需要用到的方法是delete(),返回值为布尔类型。如果成功删除,则返回true,否则返回false。

//新建文件夹并删除
File dir = new File("D:\\IO");
System.out.println(dir.mkdir()?"true":"false");
System.out.println(dir.delete()?"删除成功":"删除失败");
//输出 删除成功

//新建文件并删除
File file = new File("D:\\a.txt");
System.out.println(file.createNewFile()?"true":"false");
System.out.println(file.delete()?"删除成功":"删除失败");
//输出 删除成功

需要注意的是:当想要删除一个文件夹时,文件夹必须为空,也就是说不能包含其他文件或文件夹。

字节流

一切皆字节!任何形式的内容在计算机中都是以字节的形式存储的。

当使用字节流输出一个字节数组时,可以用字符串调用getBytes()方法,使之成为字节数组。

字节流读取的超类(顶级父类)是:InPutStream

字节流输出的超类(顶级父类)是:OutPutStream

一般地,我们在使用字节流进行操作时都是用到它的一个子类:FileInPutStream和FileOutPutStream。

字节流在进行读取操作时,read(byte[] bytes )方法会返回一个int类型的值,表示读取的总字节数。

FileInputStream fis = new FileInputStream("D:\\1.txt");
/*while (true){
            byte b = (byte) fis.read();
            if (b==-1){
                break;
            }
            System.out.println((char)b);
        }*/
byte[] bytes = new byte[10];
int len = fis.read(bytes);
System.out.println(new String(bytes,0,len));
fis.close();

字节流的输出:

FileOutputStream fos = new FileOutputStream("d:\\1.txt",true);
//输出一个字节
fos.write('a');
//输出一个字节数组
/*byte[] bytes = "abcd".getBytes();
fos.write(bytes);*/
fos.close();

字符流

字符流读取的超类(顶级父类)是:Reader

字符流输出的超类(顶级父类)是:Writer

一般地,我们在使用字符流进行操作时都是用到它的一个子类:FileReader和FileWriter。

字符流在进行读取操作时,read(char[] chars)方法会返回一个int类型的值,表示读取的总字符数。

FileReader fr = new FileReader("d:\\3.txt");
char[] chars = new char[100];
int len = fr.read(chars);
System.out.println(new String(chars,0,len));
System.out.println(len);
fr.close();

字符流的输出:

FileWriter fw = new FileWriter("d:\\3.txt",true);
fw.write("锄禾日当午,汗滴禾下土\n");
fw.append("举头望明月,低头思故乡");
fw.close();
缓存读取流

将字符输入流转换带有缓存,可以一次读取一行的缓存字符读取流。

当读取的是字节流时,需要先将字节流转换成字符流,然后再执行读取一行字符的操作。

FileReader fw = new FileReader("d:\\5.txt");
BufferedReader br = new BufferedReader(fw);
System.out.println(br.readLine());
br.close();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值