Java小白学点东西(14)

1.File类

1.1File类的介绍

File这个类sun公司给java成员提供的一个处理文件和文件夹的类

现在想想面向对象是啥?专门的对象做专门的事儿

路径问题:【重要】

404 就是找不到当前文件路径

相对路径:

得有参照物

我在你隔壁,参照物是你

./代表当前目录

../相对于当前目录的上一级目录

../../相对于当前目录的上两级目录

../../../相对于当前目录的上三级目录

绝对路径:

磁盘的根路径

C:\Users\wangbo\Desktop\zz2109\day19\code

个人建议,咱们以后在写路径:

使用 /

1./支持windows和Linux

2.\ z支持windows系统,但是不支持Linux系统

新学一个类咱们首先要看官方手册(API)

File这个类是专门处理文件和文件夹的类

很轻松,是个人就会。为啥这样说?学构造方法,学方法就可以。

File类的构造方法,目的 怎么实例化对象

File(String pathName);

根据对应的文件路径,创建出来对应的文件对象或者文件夹对象

File(String parent, String child);

C:\Users\wangbo\Desktop\zz2109\day19\code

根据文件指定的父级目录,和子目录创建一个文件对象或者文件夹对象

File(File file, String chiles);

1.2使用File类创建文件或者文件夹

咱们以后会使用这些方法做文件上传,比如开发中头像上传

很多的网站和app都是实名认证的,现在需要上传身份证正反面,这个就是文件上传的功能

是需要使用到File类下面的方法的

boolean createNewFile();创建文件方法,返回值是布尔类型的数据

【注意事项】:

1.操作文件的路径不存在,返回false

2.硬盘坏了,报错

3.文件已经存在的时候,就返回false

boolean mkdir();

boolean mkdirs();

通过file对象,创建的文件夹是保存的路径地址

boolean renameTo(File file);

通过文件对象,重命名 移动等

public class Demo2 {
    public static void main(String[] args) throws IOException {
        File file = new File("D:/1.txt");
        System.out.println(file.createNewFile());//创建一个文件
        File file1 = new File("D:/aaa/bbb/ccc");
        File file2 = new File("D:/aaa/abc");
        System.out.println(file1.mkdirs());//创建多级目录(文件夹)
        System.out.println(file1.renameTo(file2));
    }

 

1.3File删除文件或者文件夹

boolean delete();立即删除

void deleteOnExit();

程序退出以后才删除对应 的文件或者文件夹

删除:硬删除,直接从磁盘上面删除,不会保留到回收站

import java.io.File;
import java.util.Scanner;

public class Demo3 {
    public static void main(String[] args) {
        File file = new File("D:/1.txt");
        System.out.println(file.delete());
        File file1 = new File("D:/2.txt");
        file1.deleteOnExit();
        new Scanner(System.in).nextInt();//这里用了一个scanner来控制程序结束以便看到效果
    }
}

1.4File对象的一些判断方法

boolean isFile();是不是普通文件

boolean isDirectory();是不是文件夹(目录)

boolean isHidden();是不是隐藏文件

boolean isAbsolute();是不是绝对路径

boolean exits();对应的文件或者文件夹是否存在

import java.io.File;

public class Demo4 {
    public static void main(String[] args) {
        File file = new File("D:/1.txt");//文件
        System.out.println(file.isFile());//是否为文件
        File file1 = new File("D:/aaa/bbb");//文件夹
        System.out.println(file1.isDirectory());//是否为目录(文件夹)
        System.out.println(file1.isHidden());//是否为隐藏文件
        System.out.println(file1.isAbsolute());//是否为绝对路径
        System.out.println(file1.exists());//是否为文件或者文件夹
        System.out.println(file.exists());//是否为文件或者文件夹
    }
}

1.5返回String类型的数据的方法

String getName();获取文件或者文件夹的名字

String getPath();获取当前创建File对象的路径

String getParent();获取当前文件对象的父级目录

String getAbsolutePath();获取绝对路径

import java.io.File;

public class Demo5 {
    public static void main(String[] args) {
        String path = "D:/aaa/bbb/1.txt";
        File file = new File(path);
        System.out.println(file.getName());//获取文件夹名或者文件名
        System.out.println(file.getParent());//获取当前文件的父级目录
        System.out.println(file.getPath());//获取当前创建file对象的名字
        File file1 = new File("./");
        System.out.println(file1.getPath());//
        System.out.println(file1.getAbsolutePath());//获取绝对路径
        System.out.println(file.getAbsoluteFile());//返回此抽象路径名的绝对形式。
        System.out.println(file.getAbsolutePath());//获取绝对路径
    }
}

 

1.6返回是long类型数据的方法

long length();获取文件占用硬盘的字节数

long lastModified();获取当前文件最后的修改时间,这个时间是时间戳

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;


public class Demo5 {
    public static void main(String[] args) {
        String path = "D:/aaa/bbb/1.txt";
        File file = new File(path);
        System.out.println(file.length());//输出文件的大小
        System.out.println(file.lastModified());//输出时间戳
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");//设计一个时间格式
        String formatString = simpleDateFormat.format(new Date(file.lastModified()));//将时间戳格式化
        System.out.println(formatString);
    }
}

 

 

1.7文件列表方法

static File[] listRoots(); 只适用于windows系统。获取当前盘符下面的所有的类对象

String[] list();

获取当前文件夹对象下面所有的子文件和子文件夹对象

import java.io.File;

public class Demo6 {
    public static void main(String[] args) {
        File file = new File("");
        File[] files = file.listRoots();
        for (File file1:files
             ) {
            System.out.println(file1);
        }
        System.out.println("==================================");
        File file1 = new File("D:");
        String[] strings = file1.list();
        for (String s:strings
             ) {
            System.out.println(s);
        }
    }
}

 

2.IO流

IO流主要用作文件读写,其实电脑的功能就是在读写

2.1缓冲概念

看视频有点卡,等他一下,再缓冲一会儿

顺丰快递

上海===》郑州

快递有物流中转基地,到时间点,攒够以后再发

计算机读,存。计算机的cpu通过内存读取硬盘中的数据,不是一个字节一个字节读取的。

每次大概从硬盘中读取4kb。

为什么要读取4kb?

1.提高读取和存储的效率

2.保护磁盘

io流在操作文件的时候:

读取和写入数据,如果按照一个字节或者一个字符来出来的话,效率是非常低的,可以采用缓冲的概念。

1.读取数据,按照CPU通过内存区读取硬盘上的数据,读取的数据是4kb,缓冲到内存区,再从内存区取出来

磁盘-》内存-》数据展示

2.写入,先把数据放到内存中,然后再把内存写到磁盘中

数据-》内存-》磁盘

IO流也是分为两个 读的 流 写的流

2.2IO流的分类

参照物是内存,可以理解为是当前的应用程序(demo)
I
    input 输入  从硬盘读取数据存入到了内存中,这叫输入
O
    output 输出  从内存中写入数据到硬盘中,这叫输出
输入流(读)和输出流(写)
两种处理方式:
    字节流:
        按照字节为单位,处理当前文件
    字符流:
        首先按照字节读取或者写入数据,但是在操作过程中会有一个解码过程。如果解码不成功,就意味着咱们读取数据和写入数据失败了。容易失败

java给咱们提供了
    输入字节流
        InpuStream  它有一个子类  FileInputStream
    输出字节流
       OutputStream 他有一个子类  FileOutputStream
       

2.3缓冲流

所有的缓冲流都是没有读写功能的,一般作用域输入流和输出流上

字节输入缓冲流
    BufferedInputStream
字节输出缓冲流
    BufferedOutputStream
import java.io.*;

public class Demo7 {
    public static void main(String[] args) throws IOException {
        File file = new File("D:/aaa/bbb/1.txt");
        BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(file));
        int length = -1;
        byte[] bytes = new byte[1024 * 4];
        while ((length = bufferedInputStream.read(bytes)) != -1) {
            System.out.println("已加载4kb");
        }
        System.out.println(new String(bytes));
        bufferedInputStream.close();
    }
}
 

import java.io.*;

public class Demo8 {
    public static void main(String[] args) throws IOException {
        myOut();
    }
    public static void myOut() throws IOException {
        File file = new File("D:/aaa/bbb/2.txt");
        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(file));
        byte[] bytes = "情人节,我单身".getBytes();
        bufferedOutputStream.write(bytes);
        bufferedOutputStream.close();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宇智波波奶茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值