学习Java二十二天文件和IO流1

文件:

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

public class FileDemo {
    public static void main(String[] args) throws IOException {
//        构造方法:
//        File(String pathname) -	通过参数指定的路径名来构造对象
        File file = new File("D:\\a.txt");
//
//        成员方法:
//        - public String getName() :获取名称
        System.out.println(file.getName());
//                - public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。
        String[] list = file.list();
        System.out.println(list);

//        - public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。
        File[] files = file.listFiles();
        System.out.println(files);
 - public boolean isDirectory() :此File表示的是否为目录。
        System.out.println(file.isDirectory());
//        - public boolean isFile() :此File表示的是否为文件。
        System.out.println(file.isFile());

    }
}

练习

public class Demo1 {
    public static void main(String[] args) {
        //判断指定⽬录下的⽂件和⽬录,如果是⽂件则打印{⽂件名称},如果是⽬录则打印[⽬录名称],
        //打印指定⽬录中以pdf结尾的⽂件名称

        //先创建一个对象然后关联文件
        File file = new File("D:\\Program Files\\feiq\\Recv Files");
        //将文件夹里面的内容用数组表示
        File[] files = file.listFiles();
        //遍历数组并加判断条件
        for (File file1 : files) {
            if(file1.isDirectory()){
                System.out.println("["+file1.getName()+"]");
            }else if(file1.getName().endsWith(".pdf")){
                System.out.println(file1.getName());
            }else {
                System.out.println("{"+file1.getName()+"}");
            }
        }
    }
}

IO流

I / O 就是 Input / Output 的简写,也就是输⼊ / 输出的含义。站在程序的⻆度,读就是输⼊,写就是输
字节流和字符流:
字节流:读写的基本单位是按字节进⾏,各种类型的⽂件都可以读写
字符流:读写的基本单位是按字符 进⾏,只能读写⽂本⽂件
输⼊流和输出流:
输⼊流:将⽂件中的数据内容读取出来输⼊到程序中,也就是读⽂件。
输出流:将程序中的数据内容输出到⽂件中,也就是写⽂件

FileOutputStreamDemo:

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

public class FileOutputStreamDemo {
    public static void main(String[] args) {

        FileOutputStream fos = null;
        try {
            //FileOutputStream(String name) - 根据参数指定的⽂件名来构造对象。
            fos = new FileOutputStream("a.txt");
            //void write(int b) - 将指定字节写⼊此⽂件输出流。
            fos.write(97);
            //void write(byte[] b, int off, int len)
            // 将指定byte数组中从偏移量off开始的len个字节写⼊此⽂件输出流。
            byte[] bytes = {'H', 'E', 'L', 'L', 'O'};
            fos.write(bytes, 0, 5);
            
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            if (fos != null) {
                //void close() - 关闭此⽂件输出流并释放与此流有关的所有系统资源。
                try {
                    fos.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
        }


    }
}

FileInputStreamDemo:

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;

//        int read(byte[] b, int off, int len)
//        - 从此输⼊流中将最多len个字节的数据读⼊⼀个byte数组中。
//        int read(byte[] b)
//        - 从此输⼊流中将最多b.length个字节的数据读⼊⼀个byte数组中。返回读取字节的个数
public class FileInputStreamDemo {
    public static void main(String[] args) {
        try {
            FileInputStream fis = new FileInputStream("a.txt");
            //int read() - 从此输⼊流中读取⼀个数据字节。 -1是EOF。
            int read = fis.read();
            System.out.println(read);//97
            System.out.println("========");
            int len = 0;
            while((len=fis.read())!=-1){
                System.out.println((char)len);
            }

        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

练习

//将a中的内容读取出来复制到b上
public class IOTest {
    public static void main(String[] args) {
        try {
            FileOutputStream fos = new FileOutputStream("b.txt");
            FileInputStream fis = new FileInputStream("a.txt");
            int date = 0;
            int num = fis.available();
            byte bytes[] = new byte[num];
            while((date = fis.read(bytes))!=-1){
                fos.write(bytes);
            }
            System.out.println("拷贝完成");
            fis.close();
            fos.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }
}

BufferWriterAndBufferReadDemo

import java.io.*;

public class BufferWriterAndBufferReadDemo {
    public static void main(String[] args) {
        try {
            BufferedReader br = new BufferedReader(
                    new InputStreamReader(new FileInputStream("a.txt"))
            );

            BufferedWriter bw =new BufferedWriter(
                    new OutputStreamWriter(new FileOutputStream("a.txt")));
            bw.write("欲买桂花同载酒");
            bw.newLine();
            System.out.println("加入成功");
            bw.close();
            String s = br.readLine();
            System.out.println(s);
            br.close();
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

FileWriterAndFileReadDemo

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

public class FileWriterAndFileReadDemo {
    public static void main(String[] args) {
        try {
            FileWriter fw = new FileWriter("a.txt");
            FileReader fr = new FileReader("a.txt");
            fw.write("仰天大笑出门去");
            fw.append('!');
            System.out.println("添加完成");
            fw.close();
            int date = 0;
            while((date = fr.read())!=-1){
                System.out.print((char)date);
            }
            fr.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }
}

练习

不断地提示⽤户输⼊要发送的内容,若发送的内容是 "再见" 则聊天结束, 否则将⽤户输⼊的内容写⼊到⽂件 b.txt 中。
import java.io.*;

public class BufferedTest {
    public static void main(String[] args) {
        BufferedWriter bw = null;
        BufferedReader br = null;
        try {
            //先关联文件
             bw = new BufferedWriter(
                    new OutputStreamWriter(new FileOutputStream("b.txt")));
            br = new BufferedReader(
                    new InputStreamReader(System.in));
            //一直提醒以及没有关键语句停止要循环
            while (true){
                System.out.println("请输入发送的消息");
                String s = br.readLine();
                //加上限制条件
                if ("再见".equalsIgnoreCase(s)){
                    break;
                }else {
                    bw.write(s);
                    bw.newLine();
                }
            }
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }finally {
            try {
                bw.close();
                br.close();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }

        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值