JavaIO

目录

​编辑一、File

1.常用方法:

二、Stream

ObjectStream​​​​​​​

一、File

一个File类的对象,可以表示计算机硬盘上一个具体的文件或目录(文件夹)
通过File类的对象 来获取文件/目录的相关信息(例如创建时间,是否可写......)

但是不能读取文件中的内容

File类是java.io包中很重要的一个类;

File类的对象可以表示文件,还可以表示目录,在程序中一个File类对象可以代 表一个文件或目录;

File对象可以对文件或目录的属性进行操作,如:文件名、最后修改日期、文件 大小等;

File对象无法操作文件的具体数据,即不能直接对文件进行读/写操作

1.常用方法:

package com.ffyc.javaIO.file;

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

public class FileDemo1 {
  
    public static void main(String[] args) {
        File f=new File("E:/a.txt");
        File f1=new File("E:/a");//表示E盘中的a文件夹
        System.out.println(f.canWrite());//返回文件是否可以写入
        System.out.println(f.exists());//文件或目录是否存在
        System.out.println(f.getAbsoluteFile());//获取文件绝对地址
        System.out.println(f.isHidden());//返回文件或目录是否是隐藏模式
        System.out.println(f.isDirectory());//判断是否是目录
        System.out.println(f.isFile());//判断是否是文件
        System.out.println(f.lastModified());//返回文件最后一次修改时间
        System.out.println(new Date(1695976471749L));//把long类型的时间 转换为Date对象
        System.out.println(f.getName());//获取文件名
        System.out.println(f.length());//获取到的是文件的字节数   一个英文字母占一个字节,在utf-8编码表中一个汉字需要3个字节

    }
}
package com.ffyc.javaIO.file;

import java.io.File;
import java.io.IOException;
import java.util.Date;

public class FileDemo2 {
    
    public static void main(String[] args) throws IOException {
        /*File f=new File("E:/aa");
        if(!f.exists()){
            boolean res=f.createNewFile();//创建文件
            System.out.println(res);
        }
        System.out.println(f.delete());//删除文件*/
        File f=new File("E:/aa/bb/cc");
        //f.mkdir();//只能创建单级目录
        //f.mkdirs();//创建多级目录

        f.delete();//也是可以删除文件夹的,但是要求文件夹中没有其他内容
    }
}
package com.ffyc.javaIO.file;

import java.io.File;
import java.io.IOException;

public class FileDemo3 {
   
    public static void main(String[] args) throws IOException {

        File f = new File("E:/a");
        /*String[]strings=f.list();//获取到指定目录下一级所有文件/目录的名字(string)
        for(String s:strings){
            System.out.println(s);
        }*/
        File[] files = f.listFiles();
        for (File file : files) {
            if (file.isDirectory()) {
                Delete(f);
            }else {
                file.delete();
            }

        }
    }

    public static void Delete(File f) {
        if (f.isDirectory()) {
            File[] files = f.listFiles();
            for (File file : files) {
                Delete(file);
            }
        }else{
            f.delete();
        }
    }

}

二、Stream

创建一个输入流对象

package com.ffyc.javaIO.stream;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class StreamDemo1 {
    public static void main(String[] args) throws IOException {
        //创建一个输入流对象
        FileInputStream in =new FileInputStream("E:/a.txt");
        FileOutputStream out=new FileOutputStream("E:/b.txt");//输出流会自动创建文件
        /*System.out.println(in.read());//97   每read一次 返回一个字节编码
        System.out.println(in.read());//98
        System.out.println(in.read());//99
        System.out.println(in.read());//100
        System.out.println(in.read());//-1  当文件内容读完了以后,返回-1*/
        int t=0;
        while((t=in.read())!=-1){
            System.out.println(t);
            out.write(t);
        }
        //关闭流对文件的占用
        in.close();
        out.close();
    }
}

package com.ffyc.javaIO.stream;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class StreamDemo2 {
    public static void main(String[] args) throws IOException {
        //创建一个输入流对象
        FileInputStream in =new FileInputStream("E:/baidu.jpg");
        FileOutputStream out=new FileOutputStream("E:/baidu1.jpg");//输出流会自动创建文件

        int t=0;
        while((t=in.read())!=-1){
            System.out.println(t);
            out.write(t);
        }
        //关闭流对文件的占用
        in.close();
        out.close();
    }
}
package com.ffyc.javaIO.stream;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class StreamDemo3 {
    public static void main(String[] args) throws IOException {
        //创建一个输入流对象
        FileInputStream in =new FileInputStream("E:/baidu.jpg");
        FileOutputStream out=new FileOutputStream("E:/baidu1.jpg");//输出流会自动创建文件
        /*
        int read() 默认一次读一个字节,返回的是读到的字节编码 效率低.
        int read(byte[] b) 默认一次读一个指定大小的byte数组个字节,返回的是数组中一次实际装入的字节个数
        两个方法相同之处都是读完后返回-1;
         */
        byte[]bytes=new byte[100];
        int size=0;
        int i=0;
        while((size=in.read(bytes))!=-1){
            i++;
            out.write(bytes, 0, size);
        }
        //关闭流对文件的占用
        in.close();
        out.close();
    }
}
package com.ffyc.javaIO.stream;

import java.io.*;

public class StreamDemo4 {
    public static void main(String[] args) throws IOException {
        //创建一个输入流对象
        FileInputStream in=new FileInputStream("E:/baidu.jpg");//节点流,直接包含文件(数据)
        BufferedInputStream bin=new BufferedInputStream(in);//处理流--带缓冲功能的流

        FileOutputStream out=new FileOutputStream("E:/baidu1.jpg");
        BufferedOutputStream bout=new BufferedOutputStream(out);

        byte[]bytes=new byte[1024];
        int size=0;
        while ((size=bin.read(bytes))!=-1){
            bout.write(bytes,0,size);
        }
        bin.close();
        bout.flush();//刷新缓冲区
        bout.close();



    }
}
package com.ffyc.javaIO.stream;

import java.io.*;

public class StreamDemo5 {
    public static void main(String[] args) throws IOException {
        //数据输入输出流
        String s="你好";
        FileOutputStream out=new FileOutputStream("");
/*
        out.write(s.getBytes());//实际向外发送时,需要转为byte数组
*/
        DataOutputStream dout=new DataOutputStream(out);
        dout.writeUTF(s);//将宁符串直接写出。 但是底层转为字节数组

        FileInputStream in=new FileInputStream("");
        /*byte[]bytes=new byte[100];
        int size=in.read(bytes);//对方接收到之后,拿到的也是byte数组
        String str=new String(bytes, 0, size);*/
        DataInputStream din=new DataInputStream(in);
        String str=din.readUTF();//直接可以读到一个宁符串, 在底层将读到宁节数组转为字符串
        System.out.println(str);
    }
}

ObjectStream

对象输入输出流:
有时候,需要将运行中的对象信息持久保存起来,因为对象在内存中,程序如果终止,对象信息就不存在了.
将对象信息输出到文件的过程,成为对象的序列化,使用ObjectOutputStream完成(处理流).
将对象信息从文件中输入到java程序的过程,成为对象反序列化,使用的ObjectInputStream
对象的反序列化,会在内存中重新城建新的对象保存数据,所以,也是java中创建对象的一种方式.
package com.ffyc.javaIO;

import java.io.*;
import java.util.Date;

public class ObjectStream {
    
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        /*String s=new String("abc");
        Date date=new Date();

        FileOutputStream out=new FileOutputStream("E:/obj.txt");
        ObjectOutputStream outputStream=new ObjectOutputStream(out);
        outputStream.writeObject(s);
        outputStream.writeObject(date);

        outputStream.flush();
        outputStream.close();*/

        FileInputStream in=new FileInputStream("E:/obj.txt");
        ObjectInputStream objectInputStream=new ObjectInputStream(in);
        String s=(String) objectInputStream.readObject();
        Date date=(Date)objectInputStream.readObject();
        System.out.println(s);
        System.out.println(date);

        objectInputStream.close();
    }
}
package com.ffyc.javaIO;

import java.io.*;
import java.util.Date;

public class ObjectStream1 {
    
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        /*
        当我们把一个类的对象用输出流向外输出时,更求这个类必须要实现序列化接口,
        否则会报错, java.io.NotSerializableException: com.ffyc.javaIo.User
         */
        /*User user = new User("132465", "654321");
        FileOutputStream out = new FileOutputStream("E:/a.txt");
        ObjectOutputStream outputStream = new ObjectOutputStream(out);
        outputStream.writeObject(user);

        outputStream.flush();
        outputStream.close();*/

        FileInputStream in = new FileInputStream("E:/a.txt");
        ObjectInputStream objectInputStream = new ObjectInputStream(in);
        User s = (User) objectInputStream.readObject();
        System.out.println(s);

        objectInputStream.close();
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

刘伊珂

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

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

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

打赏作者

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

抵扣说明:

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

余额充值