JAVA IO

目录

一、File类:

1.概念

2.相关操作

        (1).File的相关方法:

        (2).File文件的创建

        (3).用递归方法遍历且删除一个文件夹中的所有文件:

二、Stream:

1.字节流:

 (1)FileinputStream&FileOutputStream:

 (2)BufferedinputStream&BufferedOutputStream

(3)DataInputStream&DataOutputStream

 2.字符流

        (1)FileReader&FileWriter

        (2)BufferedReader&BufferedWriter

(3)PrintWriter


一、File类:

1.概念

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

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

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

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

2.相关操作

        (1).File的相关方法:

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

public class filedemo1 {
    /*
        一个file类的对象,可以表示计算机硬盘上一个具体的目录
        通过file类的对象,来获取文件、目录的相关信息(例如时间,是否可写...)但是不能读取文件中的内容
     */
    public static void main(String[] args) {
        File f=new File("D:/jianmo/src/Angle.java");//表示D盘中的a文件夹
        File f1=new File("D:/day13");
        System.out.println(f1.exists());//判断是否存在此文件
        System.out.println(f.getAbsoluteFile());//获取文件的绝对地址
        System.out.println(f1.getAbsoluteFile());
        System.out.println(f1.isFile());//判断是否为文件
        System.out.println(f.getName());//返回文件名
        System.out.println(f.getParent());//返回文件的上一级
        System.out.println(f.canRead());//判断是否可读
        System.out.println(f.lastModified());//返回1970到现在的时间
        System.out.println(new Date(f.lastModified()));
        System.out.println(new Date(f1.lastModified()));
    }
}

        (2).File文件的创建

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

public class filedemo2 {
    public static void main(String[] args) throws IOException {
        File f=new File("D/jj");
        if(!f.exists()){
            boolean x=f.createNewFile();//创建文件
            System.out.println(x);
        }
        System.out.println(f.delete());
        File f1=new File("D:/kk");
        f1.mkdir();//只能创建单级目录
        f1.mkdirs();//能创建多级目录

    }
}

        (3).用递归方法遍历且删除一个文件夹中的所有文件:

import java.io.File;

public class filedemo3 {
    public static void main(String[] args) {
        File f=new File("D:/lyk");
        /*
        String [] s=f.list();//获取到指定文件下一级所有文件或目录的名字
        for(String str:s){
            System.out.println(str);
        }
         */
        System.out.println(f.isHidden());//是否为隐藏文件

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

二、Stream:

1.字节流:

        

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

public class ObjectStream {
    /*
        对象输入输出流:
            有时候,需要将运行中的对象信息持久保存起来,因为对象在内存中,程序如果终止,对象信息就不在了

            将对象信息输出到文件的过程,称为对象的序列化,使用ObjectOutputStream完成(处理流)
            将对象信息从文件中输入到java程序的过程,称为对象反序列化,使用的ObjectInputStream
            对象的反序列化,会在内存中重新创建新的对象保存数据,所以,也是java中创建对象的一种方式
     */
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        /*String s=new String("asd");
        Date date =new Date();
        FileOutputStream out=new FileOutputStream("D:/jj.txt");
        ObjectOutputStream oos=new ObjectOutputStream(out);
        oos.writeObject(s);
        oos.writeObject(date);
        oos.flush();
        oos.close();

         */
        FileInputStream in=new FileInputStream("D:/jj.txt");
        ObjectInputStream oin=new ObjectInputStream(in);
        String s=(String)oin.readObject();
        Date d1=(Date) oin.readObject();
        System.out.println(s+"\n"+d1);
        oin.close();
    }
}

 (1)FileinputStream&FileOutputStream:

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("D:/jj.txt");
        FileOutputStream out=new FileOutputStream("D:/jj1.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
        /*
            int read() 默认一次读一个字节,返回的是读到的字节编码,效率低;
            int read(byte[] b)  默认一次读一个指定大小的byte数组个字节,返回的是数组中一次实际装入的字节个数;
         */
        byte [] b=new byte[100];
        int size=0;
        int t=0;
        while((size = in.read(b))!=-1){
            t++;
            out.write(b,0,size);
        }
        //此方法大大缩减了遍历次数
        in.close();
        out.close();
    }
}

 (2)BufferedinputStream&BufferedOutputStream

import java.io.*;

public class Streamdemo2 {
    //带缓冲区的字节输入输出流
    public static void main(String[] args) throws IOException {
        //创建一个输入流对象
        FileInputStream in=new FileInputStream("C:/yqr.png");//普通流,节点流直接包含文件(数据)
        BufferedInputStream bin =new BufferedInputStream(in);//处理流-->带缓冲功能的流

        FileOutputStream out=new FileOutputStream("C:/yqr1.png");
        BufferedOutputStream bout=new BufferedOutputStream(out);
        byte [] b=new byte[1024];
        int size;
        while((size=bin.read(b))!=-1){
            bout.write(b,0,size);
        }
        bout.close();
        bin.close();
        bout.flush();
    }
}

(3)DataInputStream&DataOutputStream

import java.io.*;

public class Streamdemo3 {
    //数据输入输出字节流
    public static void main(String[] args) throws IOException {
        String s="尼玛";
        FileOutputStream out=new FileOutputStream("D:/jj.txt");
       // out.write(s.getBytes());
        FileInputStream in=new FileInputStream("D:/jj1.txt");
        //byte[] b=new byte[100];
        //int size =in.read(b);
        //String str=new String(b,0,size);
        //这样会很麻烦
        DataOutput dout=new DataOutputStream(out);
        dout.writeUTF(s);//将字符串直接写出,但是底层转为字节数组

        DataInput din=new DataInputStream(in);
        String str1=din.readUTF();//将底层读到的字节数组转化为字符串
        in.close();
        out.close();
    }
}

 2.字符流

        (1)FileReader&FileWriter

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class chardemo {
    public static void main(String[] args) throws IOException {
        FileReader reader=new FileReader("D:/jj.txt");
        FileWriter writer=new FileWriter("D:/jj1.txt");
        char [] ch=new char[100];
        int size=0;
        while((size= reader.read(ch))!=-1){
            writer.write(ch,0,size);
        }
        reader.close();
        writer.close();
    }
}

        (2)BufferedReader&BufferedWriter

                带缓冲区;

import java.io.*;

public class chardemo2 {
    public static void main(String[] args) throws IOException {
        FileReader reader=new FileReader("D:/jj.txt");
        BufferedReader br=new BufferedReader(reader);
        FileWriter writer=new FileWriter("D:/jj1.txt");
        BufferedWriter bw=new BufferedWriter(writer);
        String str=null;//一次可以读入一行数据
        while((str=br.readLine())!=null){
            bw.write(str);//不换行插入字符串
            bw.newLine();//插入一个换行符
        }
        br.close();
        bw.flush();
        bw.close();
    }
}

(3)PrintWriter

import java.io.FileNotFoundException;
import java.io.PrintWriter;

public class chardemo3 {
    public static void main(String[] args) throws FileNotFoundException {
        /*
            PrintWriter
                单向的输出,
                后面在javaEE(服务器开发)中,可以使用PrintWriter从后端程序向前端响应数据
         */
        PrintWriter pw=new PrintWriter("D:/jj.txt");
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Aruiiiiiii

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

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

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

打赏作者

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

抵扣说明:

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

余额充值