File 类的用法和 InputStream, OutputStream 的用法

File类是什么?Stream又是什么?

        当我们再Java种需要针对一个文件进行操作的时候,我们就需要使用File类。Java标准库中给我们了很多关于文件的操作,这里我列举几个最常使用的:

1.File类的常用方法

System.out.println(file1.getAbsolutePath());//获取绝对路径

System.out.println(file1.getPath());  //获取路径

System.out.println(file1.getName()); //获取名字

System.out.println(file1.getParent()); //获取上层文件目录,若无,返回null

System.out.println(file1.length()); //获取文件长度(字节数),不能获取目录的长度

System.out.println(file1.lastModified()); //获取最后一次的修改时间,返回值为毫秒数

public boolean isDirectory():判断是否是文件目录

public boolean isFile():判断是否是文件

public boolean exists():判断是否存在

public boolean canRead():判断是否可读

public boolean canWrite():判断是否可写

public boolean isHidden():判断是否隐藏

创建硬盘中对应的文件或文件目录:

public boolean creatNewFile():创建文件。若文件存在,则不创建,返回false

public boolean mkdir():创建文件目录.如果目录存在,则不创建

public boolean mkdirs():创建文件目录,如果上层文件目录不存在,一并创建

删除磁盘中的文件或文件目录

public boolean delete():删除文件或文件夹 

2. 如何创建一个File类的实例?

2.1 绝对路径and相对路径

        在介绍创建File类之前,我们先需要知道一个文件的<绝对路径和相对路径>

绝对路径:包含了盘符(通常为D\)在内的文件及其目录的路径。

相对路径:相对于某个路径节点来知名的路径。

        用下面这个万能猫猫.jpg文件举例的话它的绝对路径就是D:\学习资料\JAVA代码\万能猫猫.jpg 相对路径: 相对于学习资料文件夹就是   ./JAVA代码/万能猫猫.jpg

注意此处 正斜杠/ 反斜杠\ 都可以作为文件目录标识符,但是推荐使用/。因为\C语言中跟某些字母搭配会有变为转义字符的风险。 同样,文件夹名称不要用汉语,这里是因为笔者买电脑的时候不知道这些,为后来的学习编程还营造了不少麻烦。

2.2创建一个File类实例

直接输入对应字符串来表示文件位置

File file1=new File("hello.txt"); //相对于当前module

File file2=new File("D:/学习资料/JAVA代码/java-test/hello.txt"); //绝对路径

使用字符串来表示文件目录

File file3=new File("D:/学习资料/JAVA代码/java-test", "hello.txt");//文件目录

在某一文件目录下的某一文件

File file4=new File(file3,"hi.txt"); //相当于在java-test下面的一个文件

3. InputStream and OutputStream 的使用

3.1 介绍

Java中,按照数据单位的不同,将文件分为字节流数据和字符流数据,字节流默认不使用缓冲区;字符流使用缓冲区。. 字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但它不支持直接写入或读取Unicode码元;字符流通常处理文本数据,它支持写入及读取Unicode码元。

        根据流向的不同(相对于CPU,从CPU往外的操作叫输出),分为输入流(In~)和输出流(Out~)。

3.2 使用

这两个流都属于抽象基类,我们常常使用他们的实现类(FileInputStream FileOutputStream)来进行对象的实例化。

创建文件:

File file = new File(“hello.txt”);

创建流

FileInputStream f = new FileInputStream(file);

读取数据(写文件关键字为write,用法基本一致)

byte[] buffer = new byte[5];

            int len; //记录每次读取的字节个数

            while ((len = f.read(buffer)) != -1)

            {

                String str=new String(buffer,0,len);

                System.out.print(str);

            }

此处read操作每次读取文件中的一个字节,返回-1的时候表示读完了这个文件。

关闭资源

if (f!=null){

f.close();

}

但是此处流资源不一定能够被关闭,如果在读操作的时候返回了return;则这一步会被跳过,我们可以使用finally来确保。同时需要注意,文件操作会报IO异常,我们必须记得处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值