File类和InputStream,OutputStream的用法

1.文件系统

        操作系统使用文件系统来管理文件,每个文件都有一个路径,用来描述文件的位置。文件路径分为绝对路径和相对路径:

        绝对路径是从盘符出发的路径,举个例子:"D:/learn/test.txt",这个路径从D盘的盘符出发,那么这是一个绝对路径;

        相对路径需要先定好基准目录,用"."表示当前目录,".."表示上一级目录,例如:定义基准目录为"D:/learn",可以用"."表示,"./text.txt"就是一个相对路径,实际就表示"D:/learn/test.txt";"D:/"可以用".."表示,"../test.txt"实际就表示"D:/test.txt";

文件的分类:文件分为文本文件和二进制文件。

2.文件系统的操作

        文件系统可以进行创建文件,获取文件路径,删除文件,创建目录,重命名等操作。

1.获取文件路径/名称等相关操作(get)

  1. getParent():String:返回File对象的父目录文件路径
  2. getName():String:返回File对象的纯文件名称
  3. getPath():String:返回File对象的文件路径
  4. getAbsolutePath():String:返回File对象的绝对路径
  5. getCanonicalPath():String:返回File对象的修饰过的绝对路径

代码如下:

运行结果:

2.判断文件是否存在,是文件还是路径

  1. exists():boolean
  2. isDrectory():boolean
  3. isFile():boolean
  4. createNewFile():boolean

代码如下:

运行结果:

当文件不存在时,判断file是文件还是路径,返回结果都是false;

当文件存在时,可以判断file是文件还是路径;

当文件存在时,再创建相同的文件时,不会创建文件,并且返回false;

3.普通文件的删除

  1. delete():boolean
  2. deleteOnExit():void

代码如下:

运行结果:

再演示一下deleteOnExit,首先文件存在,如下图:

代码:

运行结果及检查文件是否存在:

可以看到,程序运行时,调用deleteOnExit不会删除文件,程序运行结束后,才删掉文件。

4.目录的创建

  1. mkdir():boolean
  2. mkdirs():boolean

代码如下:

运行结果:

当目录不存在时,判断file是文件还是目录,结果都会返回false;

当目录存在时,可以判断file是文件还是路径;

当目录存在时,再创建相同的目录,不会创建,返回false;

再演示创建多层目录:

代码:

运行结果:

创建多层目录时,如果中间目录不存在,比如上面的test2和test3,那么就无法使用mkdir创建目录,要创建多层目录,需要使用mkdirs创建。

5.文件重命名

  1. renameTo(File):boolean

代码:

运行结果:

上面目录test2被重命名成test5,重命名操作适用于目录和文件。

6.查看文件目录

  1. list():String[]
  2. listFiles():File[]

代码如下:

运行结果:

代码如下:

运行结果:

3.文件内容的读写

1.InputStream

  1. read():int
  2. read(byte[] b):int
  3. read(byte[] b, int off, int len):int
  4. close():void

InputStream是一个抽象类,要使用还需要具体的实现类。读取文件内容可以使用FileInputStream.

代码如下:

运行结果:

代码如下:

运行结果:

如果文件是文本文件,使用Scanner更加方便。

代码如下:

运行结果:

2.OutputStream

  1. write(int b):void
  2. write(byte[] b):void
  3. write(byte[] b, int off, int len):void
  4. close():void
  5. flush():void

OutputStream同样也是一个抽象类,要使用还需要具体实现的类,比如写文件,可以使用FileOutputStream.

代码如下:

运行结果:

代码如下:

运行结果:

如果想在文件中追加内容,还可以通过设置参数的方式,类如:

运行结果:

也可以使用PrintWriter类,处理OutputStream,完成输出。

代码如下:

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值