IO操作案例合集

Reader Writer
package ioDemo;

import java.io.*;
import java.nio.charset.Charset;

/**
 * outputStreamWriter 可以将输出的字节流转换成字符流输出
 * InputStreamReader 可以将输入的字节流转换成字符流
 */
public class ChangeStreamDemo {
    public static void main(String[] args) {
        try {
//            InputStream is = new FileInputStream("C:\\Users\\lihw\\Desktop\\test\\123.txt");
//            read(is);
            OutputStream os = new FileOutputStream("C:\\Users\\lihw\\Desktop\\test\\123.txt");
            writeDemo(os);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void read(InputStream in) {
        try {
            Reader reader = new InputStreamReader(in, Charset.defaultCharset());
            char[] chars = new char[1024];
            int len = -1;
            while ((len = reader.read(chars)) != -1) {
                System.out.println(new String(chars, 0, len));
            }
            System.out.println("读取完毕");
            reader.close();
        }catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void writeDemo(OutputStream out) {
        try {
            Writer writer = new OutputStreamWriter(out);
            writer.write("开开心心来玩耍");
            writer.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

FileWriter FileReader
package ioDemo;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.Writer;

public class CharStreamDemo {
    public static void main(String[] args) {
       out();
       in();
    }

    private static void in() {
        try {
            char[] chars = new char[1024];
            File file = new File("C:\\Users\\lihw\\Desktop\\test\\lhw.txt");
            FileReader fr = new FileReader(file);
            StringBuffer sb = new StringBuffer();
            int len = -1;
            while ((len = fr.read(chars)) != -1) {
                sb.append(chars, 0, len);
            }

            System.out.println(sb.toString());
            System.out.println("读取完毕");
            fr.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void out(){
        try {
            File file = new File("C:\\Users\\lihw\\Desktop\\test\\lhw.txt");
            FileWriter fw = new FileWriter(file);
            String info = "哈哈,我是file writer";
            fw.write(info);
            fw.flush();
            fw.close();
            System.out.println("write 写入完毕");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

```

#### copy File
```java
package ioDemo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class CopyFile {
    public static void main(String[] args) {
        try {
            File file = new File("C:\\Users\\lihw\\Desktop\\test\\123.txt");
            File copyFile = new File("C:\\Users\\lihw\\Desktop\\test\\1234.txt");
            FileInputStream fis = new FileInputStream(file);
            FileOutputStream fos = new FileOutputStream(copyFile);
            int len = -1;
            byte[] bytes = new byte[20];
            while ((len = fis.read(bytes)) != -1) {
                fos.write(bytes, 0, len);
                fos.flush();
            }

            fis.close();
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

```

#### DataOutputStream DataInputStream
```java
package ioDemo;

import java.io.*;

public class DataStreamDemo {
    public static void main(String[] args) {
//        write();
        reader();
    }

    public static void write() {
        try {
            File file = new File("C:\\Users\\lihw\\Desktop\\test\\data.bb");
            if (!file.exists()) {
                file.createNewFile();
            }

            FileOutputStream fos = new FileOutputStream(file);
            BufferedOutputStream bos = new BufferedOutputStream(fos);
            DataOutputStream dos = new DataOutputStream(bos);
            dos.writeInt(100);
            dos.writeBoolean(false);
            dos.writeUTF("哈哈哈哈,这是字符串");

            dos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void reader() {
        try {
            File file = new File("C:\\Users\\lihw\\Desktop\\test\\data.bb");
            if (!file.exists()) {
                file.createNewFile();
            }
            InputStream is = new FileInputStream(file);
            BufferedInputStream bis = new BufferedInputStream(is);
            DataInputStream dis = new DataInputStream(bis);

            int num = dis.readInt();
            boolean boo = dis.readBoolean();
            String text = dis.readUTF();

            System.out.println(num);
            System.out.println(boo);
            System.out.println(text);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

```

#### 读写文件

```java
package ioDemo;

import java.awt.*;
import java.io.File;
import java.io.FileFilter;
import java.util.Arrays;

public class FileDemo {
    public static void main(String[] args) {
        try {
            // 路径的写法 一 : "C:\\Users\\lihw\\Desktop\\test\\123.txt"
//        File file = new File("C:\\Users\\lihw\\Desktop\\test\\123.txt");
            // 写法 二
            File file = new File("c:" + File.separator + "Users" + File.separator + "lihw" + File.separator + "Desktop" + File.separator + "test" + File.separator + "lhw.txt");
            if (!file.exists()) {
                file.createNewFile();
                System.out.println("文件创建成功");
            }

            // 是否为文件夹
            System.out.println("是否为文件夹" + file.isDirectory());
            // 是否是文件
            System.out.println("是否是文件" + file.isFile());


            File file2 = new File("C:\\Users\\lihw\\Desktop\\test");
            boolean deleteFLag = file2.delete();
            System.out.println("是否删除成功" + deleteFLag);
            // 列出所有的文件 名子,文件夹的话列出文件夹的名字    --- 返回 文件或者文件夹的名字
            String[] list = file2.list();
            System.out.println("某个文件夹下所有文件:" + Arrays.toString(list));

            // 返回某个文件夹下面所有的文件, 是一个文件数组
            File[] files = file2.listFiles();
            for (File f: files) {
                System.out.println(f.getName());
                System.out.println(f.getAbsoluteFile());
                System.out.println(f.getAbsolutePath());
                System.out.println(f.getParent());
                System.out.println(f.getPath());
                System.out.println(f.length());
                System.out.println("是否为隐藏文件:" + f.isHidden());
                System.out.println("最后修改时间:" + f.lastModified());
                System.out.println("----------");
            }



            File file3 = new File("C:\\Users\\lihw\\Desktop\\test\\123.txt");
            System.out.println("相对路径:" + file3.getPath());
            System.out.println("绝对路径:" + file3.getAbsolutePath());


            File file4 = new File("C:\\Users\\lihw\\Desktop\\test\\abc\\cde");
            if(!file4.exists()) {
                // mkdir 创建一层文件夹 mkdirs 创建多层文件夹
                file4.mkdirs();
            }
            // 为文件重命名
            file4.renameTo(new File("C:\\Users\\lihw\\Desktop\\test\\abc\\cdf"));


            // 过滤 显示返回的文件
            File file5 = new File("C:\\Users\\lihw\\Desktop\\test");
            file5.listFiles((pathname -> {
                // 问价列表过滤器, 可以设置要显示 哪些 的文件,例如只显示 以txt结尾的文件
                return pathname.getPath().endsWith(".txt");
            }));
        } catch (Exception e) {
            e.printStackTrace();
        }


    }
}

```

#### 文件的分割和融合
```java
package ioDemo;

import java.io.*;

/**
 *  文件的 分割
 */
public class FileDevisionAndMerge {
    public static void main(String[] args) {
        File file = new File("C:\\Users\\lihw\\Desktop\\openlayer_demo.zip");
        devision(file, Double.valueOf(1024 * 1024 * 10));
    }

    public static void devision(File targetFile, Double cutSize){
        if(targetFile == null) return;
        double tmpnumber = targetFile.length() / cutSize;

        // 计算总分割的文件数
        int num = (int)Math.ceil(tmpnumber);
        try {
            // 构造一个文件输入流
            InputStream is = new FileInputStream(targetFile);
            BufferedInputStream bis = new BufferedInputStream(is);

            BufferedOutputStream bos = null;
            byte[] bytes = null;
            int len = -1;
            int count = 0;

            for(int i = 0; i < num; i++) {

                File tmpFile = new File("C:\\Users\\lihw\\Desktop\\ol-资料\\" +  i + targetFile.getName());
//                if(!tmpFile.exists()) {
//                    tmpFile.createNewFile();
//                }
                bos = new BufferedOutputStream(new FileOutputStream(tmpFile));
                if(cutSize > 1024) {
                    bytes = new byte[1024];
                    count = (int)Math.ceil(cutSize / 1024);
                }else {
                    bytes = new byte[cutSize.intValue()];
                    count = 1;
                }

                while (count > 0 && (len = bis.read(bytes)) != -1) {
                    bos.write(bytes, 0, len);
                    bos.flush();
                    count--;
                }

                bos.close();

            }

            bis.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

```

#### 文件的融合
```java
package ioDemo;

import java.io.*;
import java.util.Enumeration;
import java.util.Vector;

/**
 * 文件合并---使用合并流
 */
public class FileMerge {
    public static void main(String[] args) {
        try {
            InputStream is1 = new FileInputStream("C:\\Users\\lihw\\Desktop\\ol-资料\\0openlayer_demo.zip");
            InputStream is2 = new FileInputStream("C:\\Users\\lihw\\Desktop\\ol-资料\\1openlayer_demo.zip");
            InputStream is3 = new FileInputStream("C:\\Users\\lihw\\Desktop\\ol-资料\\2openlayer_demo.zip");
            InputStream is4 = new FileInputStream("C:\\Users\\lihw\\Desktop\\ol-资料\\3openlayer_demo.zip");
            InputStream is5 = new FileInputStream("C:\\Users\\lihw\\Desktop\\ol-资料\\4openlayer_demo.zip");

            Vector<InputStream> v = new Vector<>();
            v.add(is1);
            v.add(is2);
            v.add(is3);
            v.add(is4);
            v.add(is5);

            Enumeration<InputStream> elements = v.elements();

            SequenceInputStream sis = new SequenceInputStream(elements);
            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:\\Users\\lihw\\Desktop\\ol-资料\\33.zip"));

            byte[] bytes = new byte[1024];
            int len = -1;
            while ((len = sis.read(bytes)) != -1) {
                bos.write(bytes, 0, len);
            }
            bos.close();
            sis.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


}

```

#### ObjectOutputStream ObjectInputStream
```java

package ioDemo;

import java.io.*;

public class ObjectStreamDemo {
    public static void main(String[] args) {
//        writeObj();
        readObj();
    }

    public static void writeObj() {
       try {
           Dog dog = new Dog("旺旺", 10, "母");
           File file = new File("C:\\Users\\lihw\\Desktop\\test\\666");
           if (!file.exists()) {
               file.createNewFile();
           }
           OutputStream out = new FileOutputStream(file);
           ObjectOutputStream oos = new ObjectOutputStream(out);
           oos.writeObject(dog);

           oos.close();
       } catch (Exception e) {
           e.printStackTrace();
       }
    }

    public static void readObj() {
        try {
            Dog dog = null;
            File file = new File("C:\\Users\\lihw\\Desktop\\test\\666");
            InputStream is = new FileInputStream(file);
            ObjectInputStream ois = new ObjectInputStream(is);
            dog = (Dog) ois.readObject();
            System.out.println("从文件中读取的对象");
            System.out.println(dog);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class Dog implements Serializable {
    private static final long serialVersionUID = 1L;
    private String name;
    private int age;
    private String sex;

    // transient 关键字 标记 该字段在 对象 序列化时被忽略
    private transient int id;

    public Dog() {
    }

    public Dog(String name, int age, String sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}
```

#### PipedStream
```java
package ioDemo;

import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.nio.charset.StandardCharsets;

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

        PipedInputStream pis = new PipedInputStream();
        PipedOutputStream pos = new PipedOutputStream();

        try {
            pis.connect(pos);
        } catch (Exception e) {
            e.printStackTrace();
        }

        ReadThread readThread = new ReadThread(pis);
        WriteThread writeThread = new WriteThread(pos);
        new Thread(readThread).start();
        new Thread(writeThread).start();

    }
}

class ReadThread implements Runnable {
    private PipedInputStream pis;
    public ReadThread(PipedInputStream pis){
        this.pis = pis;
    }

    @Override
    public void run() {
        try {
            byte[] bytes = new byte[1024];
            int len = -1;
            while ((len = pis.read(bytes)) != -1) {
                System.out.println(new String(bytes, 0, len));
            }
            System.out.println("读取结束");
            pis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

class WriteThread implements Runnable{
    private PipedOutputStream pos;
    public WriteThread(PipedOutputStream pos) {
        this.pos = pos;
    }
    @Override
    public void run() {
        try {
            // 管道输出流
            pos.write("你好呀,妹妹".getBytes(StandardCharsets.UTF_8));
            pos.close();
            System.out.println("写入结束");
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}



```

#### PrintStreamDemo
```java
package ioDemo;

import java.io.*;

public class PrintStreamDemo {
    public static void main(String[] args) {
//        bytePrint();
        charPrint();
    }

    public static void bytePrint() {
        File file = new File("C:\\Users\\lihw\\Desktop\\test\\123.txt");
        try (OutputStream os = new FileOutputStream(file);
             BufferedOutputStream bos = new BufferedOutputStream(os);
             PrintStream ps = new PrintStream(bos)) {

            ps.print("哈哈哈,这里是print的方法");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void charPrint() {
        File file = new File("C:\\Users\\lihw\\Desktop\\test\\123.txt");
        try (
                Writer writer = new FileWriter(file);
                BufferedWriter bw = new BufferedWriter(writer);
                PrintWriter pw = new PrintWriter(bw);
                ){
            pw.print("hahah,真的是你么,printWriter");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

```

#### propertie文件读取demo
```java

package ioDemo;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.Properties;

public class propertiesDemo {
    public static void main(String[] args) {
       // read();
        write();
    }

    private static void write() {
        try {
            Properties p = new Properties();
            p.put("name", "lhw");
            p.put("version", "100");
            p.put("password", "poi");

            p.store(new FileOutputStream("config.properties"), "update 2022-6-9");


        }catch (Exception e) {
            e.printStackTrace();
        }
    }


    public static void read(){
        String name = "";
        int version = 0;
        String password = "";
        try {
            Properties properties = new Properties();
            InputStream is = new FileInputStream("config.properties");
            properties.load(is);

            name = properties.getProperty("name");
            version = Integer.parseInt(properties.getProperty("version"));
            password = properties.getProperty("password");

            System.out.println(new String(name.getBytes(), "utf-8"));
            System.out.println(name);
            System.out.println(version);
            System.out.println(password);

            is.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

```

#### StringReader
```java
package ioDemo;

import java.io.StreamTokenizer;
import java.io.StringReader;

public class StringReaderDemo {
    public static void main(String[] args) {
        StringReader sr = new StringReader("hello day day up");

        // 流 标记 器
        StreamTokenizer st = new StreamTokenizer(sr);

        int count = 0;
        while (st.ttype != StreamTokenizer.TT_EOF) {
            try {
                if(st.nextToken() == StreamTokenizer.TT_WORD) {
                    count++;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        System.out.println("一共有" + count + "个单词");
        sr.close();
    }
}

```

#### 压缩文件
```java


package ioDemo;

import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;

public class ZipFileDemo {
    public static void main(String[] args) {
//        compression("C:\\Users\\lihw\\Desktop\\test.zip", new File("C:\\Users\\lihw\\Desktop\\java8demo"));
        deCompression("C:\\Users\\lihw\\Desktop\\test.zip", "C:\\Users\\lihw\\Desktop\\123");
    }

    /**
     * 压缩文件
     *
     * @param zipFileName
     * @param targetFile
     */
    public static void compression(String zipFileName, File targetFile) {
        System.out.println("正在压缩……");
        try {
            ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(zipFileName));
            BufferedOutputStream bos = new BufferedOutputStream(zipOutputStream);

            zip(zipOutputStream, targetFile, targetFile.getName(), bos);

            bos.close();
            zipOutputStream.close();
            System.out.println("压缩完成。");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void zip(ZipOutputStream zOut, File targetFile, String name, BufferedOutputStream bos) {
        try {
            if (targetFile.isDirectory()) {
                File[] files = targetFile.listFiles();
                if (files.length == 0) {
                    zOut.putNextEntry(new ZipEntry(name + "/"));
                } else {
                    for (File f : files) {
                        // 递归处理
                        zip(zOut, f, name + "/" + f.getName(), bos);
                    }

                }
            } else {
                zOut.putNextEntry(new ZipEntry(name));
                InputStream is = new FileInputStream(targetFile);
                BufferedInputStream bis = new BufferedInputStream(is);
                byte[] bytes = new byte[1024];
                int len = -1;
                while ((len = bis.read(bytes)) != -1) {
                    zOut.write(bytes, 0, len);
                }
                bis.close();
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void deCompression(String zipFileName, String parentDir) {
        try {
            InputStream is = new FileInputStream(zipFileName);
            ZipInputStream zis = new ZipInputStream(is);
            ZipEntry entry = null;
            File file = null;

            while ((entry = zis.getNextEntry()) != null && !entry.isDirectory()) {
                file = new File(parentDir, entry.getName());
                if (!file.exists()) {
                    new File(file.getParent()).mkdirs();
                }
                FileOutputStream fos = new FileOutputStream(file);
                BufferedOutputStream bos = new BufferedOutputStream(fos);
                byte[] bytes = new byte[1024];
                int len = -1;
                while((len = zis.read(bytes)) != -1) {
                    bos.write(bytes, 0, len);
                }

                bos.close();
                System.out.println(file.getAbsolutePath() + "解压成功");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

```


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ITzhongzi

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

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

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

打赏作者

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

抵扣说明:

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

余额充值