java11.25学习总结

1.File类

File封装的一个文件操作类,我们之前在window操作文件或文件夹都是通过图形化界面操作。我们可以通过File这个类完成对文件的操作。

想使用File必须创建File对象:File file=new File("路径");

1.1文件或文件夹的创建

1.创建文件

file.createNewFile()

2.创建文件夹

File file2=new File("D:/aaa2/bbb");
file2.mkdir();

3.创建多级文件夹

File file3=new File("D:/aaa2/b/c/d");
file3.mkdirs();

注:创建的是文件还是文件夹,跟调用的方法有关,和后缀无关。

1.2删除

1.删除文件

file.delete()

2.删除文件夹

file2.delete()

3.重命名/剪切

file1.renameTo(new File("D:/aaa2/ccc"));

file.renameTo(new File("D:/qy179.txt"));

4.文件设置只读

File file2=new File("D:/aaa2/b.txt");
file2.setReadOnly();

1.3查询和判断

获取文件相路径:String path = file.getPath();

获取文件的绝对路径:String absoluteFile = file.getAbsolutePath();(常用)

                                    或String canonicalPath = file.getCanonicalPath();

1.获取指定目录下的子文件或子文件夹名

String[] list = file.list();
        for(String s:list){
            System.out.println(s);
        }

2.获取指定目录下子文件或子文件夹对象

 File[] files = file.listFiles();
        for(File f:files){
            System.out.println(f.getName()+"是否为目录"+f.isDirectory());
        }

3.判断该文件或文件夹是否存在

boolean exists = file.exists();
        if(exists){
            System.out.println("该文件已存在");
        }else{
            System.out.println("该文件不存在");
            file.mkdirs();
        }

4.判断是否为文件或文件夹

boolean file1 = file.isFile();
boolean directory = file.isDirectory();

1.4File递归查找

public class Test04 {
    public static void main(String[] args) {
        File f=new File("demo");
        print(f);
    }
    public static void print(File file){
        if(file.isFile()){
            System.out.println(file.getName()); //出口
        }else{
            //获取该文件夹下的所有文件
            File[] files = file.listFiles();
            //遍历文件
            for(File f:files){
                 print(f); //递归
            }
        }
    }

2.IO流

2.1分类

IO流提供了四个基类:

①InputStream: 字节输入流

②OutputStream: 字节输出流

③Reader: 字符输入流

④Writer: 字符输出流

2.2字节输出流

 OutputStream os=new FileOutputStream("路径",true);//允许追加内容

String str="hello world";
       os.write(str.getBytes());//字符串转换为字节数组类型  getBytes();
        os.write(str.getBytes()); //指定写入内容的个数
        //必须关闭该流
        os.close();

2.3字节输入流

InputStream is=new FileInputStream("路径");

byte[] bs=new byte[50];//存放读取的字节
        int read=-1;//表示读取字节的个数.
        while (    (read=is.read(bs)) !=-1    ){
            String str=new String(bs,0,read); //0,read表示读取的字节个数
            System.out.println(str);
        }
        is.close();

2.4字符输出流

字节流,适合读取的单位为字节类型,适合读取音频,视频,压缩等

字符流适合读取文本类,一定不适合音频和视频操作。

public class Test09 {
    public static void main(String[] args) throws IOException {
        Writer w=new FileWriter("demo02/f.txt");
        w.write("你好,李焕英!",0,3);
        w.close();
    }
}

2.5字符输入流

Reader r=new FileReader("路径");

1.//一次读取一个字符
        int read=-1;
        while (  (read=r.read())!=-1  ){
            System.out.print((char)read);
        }

2.一次读取多个字符
        char[] cs=new char[50];
        int size=-1;
        while (  (size=r.read(cs))!=-1  ) {
            System.out.println(new String(cs, 0, size));
        }

3.缓存流

在基础流上再一次做了封装。提高io的效率。(容器的大小不能高于水车大小。 )

3.1BufferInputStream

InputStream is=new FileInputStream("路径");
BufferedInputStream bis=new BufferedInputStream(is);

        int a=-1;
        while ( (a=bis.read())!=-1  ){
            System.out.print((char) a);
        }

        bis.close();
        is.close();

3.2BufferOutputStream

 OutputStream os=new FileOutputStream("a.txt"); 
BufferedOutputStream bos=new BufferedOutputStream(os);

String str="hello world java ai开发";
        bos.write(str.getBytes());


        bos.close();
        os.close();

4.对象流

把java中的对象写入到文件【网盘】中,或把文件中写入得java对象,读取到程序中的过程。

4.1序列化(存档)

Game game=new Game("李白",16,100,60);
        OutputStream os=new FileOutputStream("wzry/info/p1.txt");
        ObjectOutputStream oos=new ObjectOutputStream(os);
        //存档方法 java.io.NotSerializableException: 没有序列化。---
        oos.writeObject(game);
        oos.close();
        os.close();

4.2反序列化(读档)

InputStream is=new FileInputStream("wzry/info/p1.txt");
        ObjectInputStream ois=new ObjectInputStream(is);
        //读档
        Object o = ois.readObject();
        System.out.println(o);
        ois.close();
        is.close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值