Java IO流

Java IO流
一、File类
一个File的对象,可以表示计算机硬盘上的一个文件或目录(文件夹)可以获取文件信息,创建文件,删除文件但是不能对文件中的数据进行读写操作

//通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
File fi = new File(“C:\Users\qq\Desktop\demo.txt”);

System.out.println(fi.canExecute());
System.out.println(fi.canRead());
System.out.println(fi.canWrite());
System.out.println(fi.exists());//文件是否存在

    System.out.println("-----------------------------------------");
    System.out.println(fi.getAbsoluteFile() );//返回此抽象路径名的绝对形式。
    System.out.println(fi.getAbsolutePath() );//返回此抽象路径名的绝对路径名字符串
    System.out.println(fi.getParentFile() );//返回此抽象路径名的父,或抽象路径名 null如果此路径名没有指定父目录

    System.out.println(fi.getName());//返回由此抽象路径名表示的文件或目录的名称
    System.out.println(fi.getParent());//返回此抽象路径名的父 null的路径名字符串,如果此路径名未命名为父目录,则返回null

    System.out.println("------------------------------------------");
    System.out.println(fi.isAbsolute());//路径名是否是绝对的
    System.out.println(fi.isDirectory());//是否为目录/文件夹
    System.out.println(fi.isFile());//是否为普通文件
    System.out.println(fi.isHidden());//是否为隐藏文件

    System.out.println("--------------------------------------------");
    System.out.println(new Date(fi.lastModified()));//最后修改时间
    System.out.println(fi.length());//文件内容长度

        fi.mkdir();//创建单级文件夹
        fi.mkdirs();//创建多级文件夹
        fi.createNewFile();//创建一个文件

二、输入流与输出流

1.字节流
每次读写是以字节为单位(计算机中所有数据存储都是以自己为单位 ) 可以读取任意文件(视频,音频…)

输入字节流:InputStream FireInputStream

输出字节流:OutputStream FireOutputStream

单个字节读写
FileInputStream in = new FileInputStream(“F:/自动骂人工具.exe”);

    FileOutputStream out = new FileOutputStream("D:/自动夸人工具.exe");
        int s = 0;

		//in.read()每读到一个字节并返回 直到读完后返回-1
        while ((s = in.read()) != -1) {
            System.out.println(s);
        	out.write(s);
        }
        in.close;
		out.close;

数组字节读写
FileInputStream in = new FileInputStream(“F:/自动骂人工具.exe”);

                                //定义输出文件的名称
    FileOutputStream out = new FileOutputStream("D:/自动夸人工具.exe");
    //read() write(int b) 每次只能读入  写出一个字节 效率低  读写次数多
    //in.read(b); 每次读入一个byte数组个字节内容,返回实际向数组装入的字节数量 读完也是返回-1
    byte [] by = new byte[1024];
    int size = 0;
    while((size= in.read(by))!=-1){

        //每次向外写出一个byte数组个字节,从第0个开始,写size个
        out.write(by,0,size);
    }
    in.close();
    out.close();;

2.字符流
字符每次读写是以字符为单位,只能读取纯文本文件(txt,java,html)

    /*FileReader reader = new FileReader("F:\\demo.txt");
    FileWriter writer = new FileWriter("F:\\demo1.txt");

    int c = 0;
    while((c= reader.read())!=-1){
        System.out.println(c);
        writer.write(c);
    }
    reader.close();
    writer.close();*/

    FileReader reader = new FileReader("F:\\demo.txt");
    FileWriter writer = new FileWriter("F:\\demo1.txt");

    char[] ch = new char[10];
    int size = 0;
    while((size=reader.read(ch))!=-1){
        System.out.println(size);
        writer.write(ch,0,size);
    }
    reader.close();
    writer.close();

3.缓冲处理
缓冲字节输出流 BufferedOutputStream
缓冲字节输入流 BufferedInputStream
缓冲字符输入流 BufferedReader
缓冲字符输出流 BufferedWrite

//节点流  直接负责数据读和写
FileInputStream in = new FileInputStream("E:/demo.exe");
FileOutputStream out = new FileOutputStream("E:/Demo.exe");

//处理流/包装流/缓存流(带缓冲区)
BufferedInputStream bin = new BufferedInputStream(in);
BufferedOutputStream bout = new BufferedOutputStream(out);

byte[] b = new byte[1024];
int size = 0;
while ((size = bin.read()) != -1) {
    bout.write(b, 0, size);
}

bin.close();
bout.flush();//刷新缓存区
bout.close();

三、Print流
Print 打印流:只做输出没有输入
打印流分为字节打印流和字符打印流

PrintWriter:字符打印流
print方法可以打印各种类型数据

    /*
      PrintWriter 打印字符流  单项输出  用于只从服务器端向客户端输出内容

    */

    PrintWriter p = new PrintWriter("F:/demo.html");
                p.println("<a href=''>百度</a>");
                p.println("<h1>一级标题</h1>");
                p.println("<a href=''>百度</a>");

                p.close();

四、对象输入输出流
主要的作用是用于写入对象信息与读取对象信息。 对象信息
一旦写到文件上那么对象的信息就可以做到持久化了

//User: id name 需要被序列化的类,必须实现Serializable接口,会为类生成一个序列化id号,是唯一的与类对应

    /*  Date date = new Date();
    String s = new String("abc");
    User user = new User(1,"jim");*/

    //将对象信息输出到文件中  成为对象序列化 对象的类必须实现Java.io.Serializable 接口
    /*FileOutputStream out = new FileOutputStream("F:/obj.txt");
    ObjectOutputStream objtOut = new ObjectOutputStream(out);
                        objtOut.writeObject(date);
                        objtOut.writeObject(s);
                        objtOut.writeObject(user);
                        objtOut.flush();
                        objtOut.close();

                        */

    //对象的反序列化   将文件中的信息输入到程序中,再创建一个对象
    FileInputStream in = new FileInputStream("F:/obj.txt");
    ObjectInputStream objin = new ObjectInputStream(in);
                Date date = (Date) objin.readObject();
                String s = (String) objin.readObject();
                User user = (User) objin.readObject();

    System.out.println(date);
    System.out.println(s);
    System.out.println(user.getId()+":"+user.getName());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mr. Rabbit.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值