javaJSE---IO流

一、File类二、流的基本概念三、Java流的分类四、文件的读写五、小结---------------------------------------------------------------------------------------------------------------------------一、File类DeleteFile.javapublic class DeleteFile { public static void main(Stri
摘要由CSDN通过智能技术生成

一、File类

二、流的基本概念

三、Java流的分类

四、文件的读写

五、小结

---------------------------------------------------------------------------------------------------------------------------

一、File类

DeleteFile.java

public class DeleteFile {
    public static void main(String[] args) {
//        输入想要删除的文件夹路径
        File f =new File("E:\\a");
        deleteFile(f);
    }
    public static void deleteFile(File f){
        if(f.isDirectory()){
            File[] files =f.listFiles();

            for(File file1 : files){
                if (file1.isFile()){
                    file1.delete();
                }else {
                    deleteFile(file1);
                }
                file1.delete();
            }
        }
        f.delete();
    }
}

FileDemo.java

public class FileDemo {
    public static void printFiles(File file){
        File[] files = file.listFiles();
        for(File file1 : files){
            if(file1.isDirectory()){
                printFiles(file1);
            }else{
                System.out.println(file1.getAbsolutePath());
            }
        }
    }

    public static void main(String[] args) {
        String path = "E:\\20212022年HomeWork";
        File file = new File(path);
        printFiles(file);
    }
}

TestFile.java

public class TestFile {
    public static void main(String[] args){
        File file = new File("E:/moring.txt");
//        创建文件或目录
        try {
            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println(file.canExecute());
        System.out.println(file.canRead());
        System.out.println(file.canWrite());
//        删除文件
//        System.out.println(file.delete());
        System.out.println(file.exists());
//        获取文件的绝对路径
        System.out.println(file.getAbsoluteFile());
        System.out.println(file.getAbsolutePath());
        try {
//            获取文件的规范路径
            System.out.println(file.getCanonicalPath());
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println(file.getName());
        System.out.println(file.getParent());
        System.out.println(file.getPath());
        System.out.println(file.isDirectory());
        System.out.println(file.isFile());
        System.out.println(file.lastModified());
        System.out.println(file.length());
        System.out.println(file.list());
        System.out.println(file.listFiles());
        System.out.println(file.toPath());
        System.out.println(file.toString());
    }

}

二、流的基本概念

• 如何读写文件?
• 通过流来读写文件
– 流是指一连串流动的字符,是以先进先出方式发
▪ 送信息的通道

 ▪ 输入/输出流与数据源
▪ XXX->程序-->输入流

 ▪ 程序->XXX-->输出流

 

三、Java流的分类

 

输入输出流是相对于计算机内存来说的,而不是相对于源和目标

 

字节流是 8 位通用字节流,字符流是 16 位 Unicode 字符流

▪ 功能不同
– 节点流:可以直接从数据源或目的地读写数据。
– 处理流(包装流):不直接连接到数据源或目的地,是其他流进行封装。目
的主要是简化操作和提高性能。
▪ 节点流和处理流的关系
– 节点流处于io操作的第一线,所有操作必须通过他们进行
– 处理流可以对其他流进行处理(提高效率或操作灵活性) 

四、文件的读写

• 文本文件的读写
– 用FileInputStream和FileOutputStream读写文本文件
– 用BufferedReader和BufferedWriter读写文本文件
• 二进制文件的读写
– 使用DataInputStream和DataOutputStream读写二进制文件以及
基本数据类型数据的读写
• 对象的读写
– 使用ObjectInputStream和ObjectOutputStream读写对象(序列
化与反序列化) 

BufferedReaderDemo.java

public class BufferedReaderDemo {

    public static void main(String[] args) {
        FileReader fileReader =null;
        BufferedReader bufferedReader =null;
        try {
            fileReader = new FileReader("a.txt");
            bufferedReader = new BufferedReader(fileReader);
//            int length = 0;
//            char[] chars = new char[1024];
//            while((length = bufferedReader.read(chars))!= -1){
//                System.out.println(new String(chars,0,length));
//            }
//            String s = bufferedReader.readLine();
//            System.out.println(s);
//            s = reader.readLine();
//            System.out.println(s);
//            s = reader.readLine();
//            System.out.println(s);
//            s = reader.readLine();
//            System.out.println(s);
//            s = reader.readLine();
//            System.out.println(s);
            String str = "";
            while ((str = bufferedReader.readLine())!= null){
                System.out.println(str);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                bufferedReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                fileReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

BufferedWriterDemo.java

public class BufferedWriterDemo {

    public static void main(String[] args) {
        FileWriter fileWriter =null;
        BufferedWriter bufferedWriter =null;
        try {
            fileWriter = new FileWriter("d1.txt");
            bufferedWriter = new BufferedWriter(fileWriter);
            bufferedWriter.write(101);
            bufferedWriter.write("www.baidu.com百度".toCharArray());
            //写一个换行
            bufferedWriter.newLine();
            bufferedWriter.write("今天天气真不错");
            bufferedWriter.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                bufferedWriter.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                fileWriter.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

上机练习

1.CopyTxtDemo.java

public class CopyTxtDemo {

    public static void main(String[] args) {
        //创建数据源
        File src = new File("F:\\我的青春谁做主.txt");
        //创建目标数据源
        File dest = new File("E:\\我的青春谁做主.txt");
        FileInputStream fileInputStream = null;
        FileOutputStream fileOutputStream = null;
        try {
            //创建输入流对象
            fileInputStream = new FileInputStream(src);
            //创建输出流对象
            fileOutputStream = new FileOutputStream(dest);
            //接受每次读取的数据
            int length = 0;
            //定义一个缓冲区
            byte[] buffer = new byte[1024];
            //传输数据
            while ((length = fileInputStream.read(buffer))!=-1){
                //输出到目标数据源
                fileOutputStream.write(buffer,0,length);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                fileOutputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                fileInputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
}

2.CopyJpgDemo.java

public class CopyJbgDemo {

    public static void main(String[] args) {
        //创建数据源
        File src = new File("F:\\1.jpg");
        //创建目标数据源
        File dest = new File("E:\\1.jpg");
        FileInputStream fileInputStream = null;
        FileOutputStream fileOutputStream = null;
        try {
            //创建输入流对象
            fileInputStream = new FileInputStream(src);
            //创建输出流对象
            fileOutputStream = new FileOutputStream(dest);
            //接受每次读取的数据
            int length = 0;
            //定义一个缓冲区
            byte[] buffer = new byte[1024];
            //传输数据
            while ((length = fileInputStream.read(buffer))!=-1){
                //输出到目标数据源
                fileOutputStream.write(buffer,0,length);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                fileOutputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                fileInputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
}

3.(1)BufferedDemo.java

public class BufferedDemo {

    public static void main(String[] args) {
        FileReader fileReader= null;
        FileWriter fileWriter= null;
        BufferedWriter bufferedWriter= null;
        try {
            fileReader = new FileReader("虞美人.txt");
            File file=new File("虞美人2.txt");
            fileWriter = new FileWriter(file);
            bufferedWriter = new BufferedWriter(fileWriter);
            char[] cbuf=new char[1024];
            int len;
            while ((len=fileReader.read(cbuf))!=-1){
                bufferedWriter.write(cbuf,0,len);
                System.out.print(new String(cbuf,0,len));
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                bufferedWriter.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                fileWriter.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                fileReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

(2)BufferedDemo.java

public class BufferedDemo1 {

    public static void main(String[] args) {

        File file=new File("a2.txt");
        if (!file.exists()){
            file.mkdir();
        }
        File file1=new File("虞美人2.txt");
        if (!file1.exists()){
            try {
                file1.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

(3)BufferedDemo.java

public class BufferedDemo2 {

    public static void main(String[] args) {
        FileWriter fileWriter = null;
        BufferedWriter bufferedWriter = null;
        try {
            File file=new File("a1.txt");
            if (!file.exists()){
                file.mkdir();
            }
            File file1=new File("虞美人.txt");
            if (!file1.exists()){
                file1.createNewFile();
            }
            fileWriter = new FileWriter(file1);
            bufferedWriter = new BufferedWriter(fileWriter);
            bufferedWriter.write("《虞美人》"+"\n");
            bufferedWriter.write("春花秋月何时了?"+"\n");
            bufferedWriter.write("往事知多少。"+"\n");
            bufferedWriter.write("小楼昨夜又东风,"+"\n");
            bufferedWriter.write("故国不堪回首月明中。"+"\n");
            bufferedWriter.write("雕栏玉砌应犹在,"+"\n");
            bufferedWriter.write("只是朱颜改。"+"\n");
            bufferedWriter.write("问君能有几多愁?"+"\n");
            bufferedWriter.write("恰似一江春水向东流。"+"\n");
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                bufferedWriter.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                fileWriter.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    public void test1(){
        File file=new File("a2.txt");
        if (!file.exists()){
            file.mkdir();
        }
        File file1=new File("虞美人2.txt");
        if (!file1.exists()){
            try {
                file1.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    public void test2(){
        FileReader fileReader= null;
        FileWriter fileWriter= null;
        BufferedWriter bufferedWriter= null;
        try {
            fileReader = new FileReader("虞美人.txt");
            File file=new File("虞美人2.txt");
            fileWriter = new FileWriter(file);
            bufferedWriter = new BufferedWriter(fileWriter);
            char[] cbuf=new char[1024];
            int len;
            while ((len=fileReader.read(cbuf))!=-1){
                bufferedWriter.write(cbuf,0,len);
                System.out.print(new String(cbuf,0,len));
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                bufferedWriter.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                fileWriter.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                fileReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

4.(1)User.java

public enum User implements Serializable {
    //1.提供当前枚举类的多个对象,多个对象之间用逗号" , "隔开,末尾使用分号" ; "
    userInfo1("Jack",18),
    userInfo2("Jay",18),
    userInfo3("Roman",20);
    //2.声明User对象的属性:private final修饰
    private  final String userName;
    private  final int age;
    //3.私有化类的构造器,并给对象赋值
    User(String userName, int age) {
        this.userName = userName;
        this.age = age;
    }

    //4.其他诉求1:获取枚举类对象的属性
    public String getUserName() {
        return userName;
    }

    public int getAge() {
        return age;
    }

    //4.其他诉求1:提供toString()
    @Override
    public String toString() {
        return "User{" +
                "userName='" + userName + '\'' +
                ", age=" + age +
                '}';
    }
}

(2)BufferedWriterPractice.java 

public class BufferedWriterPractice {

    public static void main(String[] args) {
        FileWriter fileWriter= null;
        BufferedWriter bufferedWriter= null;
        try {
            File file=new File("d2.txt");
            fileWriter = new FileWriter(file);
            bufferedWriter = new BufferedWriter(fileWriter);
            User userInfo1=User.userInfo1;
            User userInfo2=User.userInfo2;
            User userInfo3=User.userInfo3;
            bufferedWriter.write(userInfo1.getUserName()+","+userInfo1.getAge()+",");
            bufferedWriter.write(userInfo2.getUserName()+","+userInfo2.getAge()+",");
            bufferedWriter.write(userInfo3.getUserName()+","+userInfo3.getAge());
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                bufferedWriter.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                fileWriter.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

 (3)BufferedReaderPractice.java

public class BufferedReaderPractice {

    public static void main(String[] args) {
        FileReader fileReader = null;
        BufferedReader bufferedReader = null;
        ObjectInputStream objectInputStream = null;
        try {
            fileReader = new FileReader("d2.txt");
            bufferedReader = new BufferedReader(fileReader);
            File file = new File("d2.txt");
            char[] chars = new char[1024];
            int length = 0;
            while ((length = bufferedReader.read(chars)) != -1) {
                User user =User.valueOf("userInfo1");//valueOf():可以根据对象名去调用信息
                User user1 = User.valueOf("userInfo2");
                User user2 = User.valueOf("userInfo3");
                System.out.println(user.toString());
                System.out.println(user1.toString());
                System.out.println(user2.toString());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                if (objectInputStream !=null){
                    objectInputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                bufferedReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                fileReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

五、小结

• InputStream类常用方法
– int read( )
– int read(byte[] b)
– int read(byte[] b,int off,int len)
– void close( )
– int available()
子类FileInputStream常用的构造方法
– FileInputStream(File file)
– FileInputStream(String name)

• OutputStream类常用方法
– void write(int c)
– void write(byte[] buf)
– void write(byte[] b,int off,int len)
– void close( )
子类FileOutputStream常用的构造方法
– FileOutputStream (File file)
– FileOutputStream(String name)
– FileOutputStream(String name,boolean append)
1、前两种构造方法在向文件写数据时将覆盖文件中原有的内容
2、创建FileOutputStream实例时,如果相应的文件并不存在,则会自动创建一个空的文件

Reader类常用方法
– int read( )
– int read(byte[] c)
– read(char[] c,int off,int len)
– void close( )
子类BufferedReader常用的构造方法
– BufferedReader(Reader in)
子类BufferedReader特有的方法
– readLine()

Writer类常用方法
– write(String str)
– write(String str,int off,int len)
– void close()
– void flush()
子类BufferedWriter常用的构造方法
– BufferedReader(Writer out)

• File 类用于访问文件或目录的属性
• 程序和数据源之间通过流联系
– 输入流和输出流
– 字节流和字符流
– 节点流和包装流
• FileInputStream和FileOutputStream以字节流的方式读写文本文件。
• BufferedReader和BufferedWriter以字符流的方式读写文本文件,而且效率更高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值