IO流具体代码

练习代码:

复制代码
package Demo1.JavaSe.NeusoftEdu.zuoye;

import java.io.*;

/**
 * @program: FirstDemo
 * @description: 第十天课:IO流
 * @author: GuoTong
 * @create: 2020-08-24 09:20
 **/
public class day10 {
    public static void main(String[] args) {
        //File类是描述文件或者文件夹的:它没有空参构造

        File file = new File("G:/东软就业课/javaday01/FirstJava.java");
        //判断文件存不存在
        boolean exists = file.exists();
        System.out.println(exists);
        //获取获取绝对路径
        file.getAbsoluteFile();
        //获取路径
        file.getPath();
        //获取文件名字
        file.getName();
        //获取文件上级目录
        file.getParent();
        //获取文件长度
        file.length();

        //修改文件名
        file.renameTo(new File("G:/东软就业课/javaday01/GuoTong.java"));
        //根路径||盘符       /
        File fileA = new File("/");
        //IDEA 当前项目路径        ./(可以省略)
        File fileB = new File("./");
        //当前目录的上一级路径        ../
        File fileC = new File("../");


    }
}

class MyyTest {
    public static void main(String[] args) throws IOException {
        File file = new File("G:/东软就业课/javaday01/abc.txt");
        //创建文件
        boolean fileNewFile = file.createNewFile();
        //创建文件夹
        File dir2 = new File(file.getParent(), "dir2");
        //判断文件夹是不是纯在
        if (!dir2.exists()) {
            dir2.mkdir();
        }
        //删除指定文件
        removeDir(file);

        //判断指定目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
        File[] files = dir2.listFiles();
        for (File file1 : files) {
            if (file1.isFile() && file1.getName().endsWith("jpg")) {
                System.out.println(file1);
            }
        }
        //遍历指定目录所有文件名称,包括子文件目录中的文件。
        listAll(dir2);
    }

    //删除文件的方法
    public static void removeDir(File dir) {

        File[] files = dir.listFiles();

        for (File file : files) {

            if (file.isDirectory()) {
                removeDir(file);
            } else {
                System.out.println(file + ":" + file.delete());
            }
        }
        System.out.println(dir + ":" + dir.delete());
    }

    public static void listAll(File dir) {


        System.out.println(dir.getName());
        //获取指定目录下当前的所有文件夹或者文件对象

        File[] files = dir.listFiles();

        for (int x = 0; x < files.length; x++) {

            if (files[x].isDirectory()) {
                listAll(files[x]);
            } else
                System.out.println(files[x].getName());
        }
    }
}

/**
 * 字符流:输入流  Reader ||  输出流  Writer
 * 字节流  输入流  InputStream  ||输出流  OutputStream
 * <p>
 * 处理文件的:File基类流
 * <p>
 * 使用流的步骤:
 * 1.
 */
class TestFileReader {
    //FileReader   使用
    public static void main(String[] args) throws Exception {
        //File类关联文件   G:\dowload\IDEA\IDEAAN\IDEAWorkSpace\src\
        File file = new File("./src/abc.txt");
        System.out.println("文件存在与否:" + file.exists());
        //创建FileReader对象,
        FileReader reader = new FileReader(file);
        //读取文件数据
        int read = 0;//read ==-1 ,代表结束
        while ((read = reader.read()) != -1) {
            System.out.print((char) read);
        }
        //读取完毕需要释放资源
        reader.close();

    }
}

class TestFileReader1 {
    //FileReader   使用2
    public static void main(String[] args) throws Exception {
        //创建FileReader对象,
        FileReader fr = null;
        try {
            //1.实例化File类的对象,指明要操作的文件
            File file = new File("./src/abc.txt");
            System.out.println("文件存在与否:" + file.exists());
            //2.提供具体的流
            fr = new FileReader(file);

            //3.数据的读入
            int data;
            while ((data = fr.read()) != -1) {
                System.out.print((char) data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //4.流的关闭操作
            if (fr != null) {
                try {
                    fr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}
//文件复制

class TestCopyWord {
    public static void main(String[] args) {
        //1.
        //源文件
        File file = new File("./src/abc.txt");
        //目标复制的文件
        File fileByCopy = new File("./src/abcs.txt");
        FileReader fileReader = null;
        FileWriter fileWriter = null;
        try {
            //2.
            //创建文件字符输入流FileReader,文件输出流FileWriter
            fileReader = new FileReader(file);
            fileWriter = new FileWriter(fileByCopy);//如果不存在就创建,如果是存在就不创建

            //3
            // 循环,一边读一边写
            int read = 0;
            while ((read = fileReader.read()) != -1) {
                fileWriter.write(read);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //关闭流
            try {
                if (fileWriter != null)
                    fileWriter.close();
                if (fileReader != null)
                    fileReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
        //文件复制成功提示
        System.out.println("文件复制成功!!");

    }
}
//文件复制第二版:节点流:手动数组缓冲方式

class TestCopyWord2 {
    public static void main(String[] args) {
        //1.
        //源文件
        File file = new File("./src/abc.txt");
        //目标复制的文件
        File fileByCopy = new File("./src/abcs.txt");
        FileReader fileReader = null;
        FileWriter fileWriter = null;
        try {
            //2.
            //创建文件字符输入流FileReader,文件输出流FileWriter
            fileReader = new FileReader(file);
            fileWriter = new FileWriter(fileByCopy);//如果不存在就创建,如果是存在就不创建

            //3
            // 开辟缓冲
            char[] cBuf = new char[1024];
            int len;//记录每次读入到cbuf数组中的字符的个数
            while ((len = fileReader.read(cBuf)) != -1) {
                //每次写出len个字符
                fileWriter.write(cBuf, 0, len);

            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //关闭流
            try {
                if (fileWriter != null)
                    fileWriter.close();
                if (fileReader != null)
                    fileReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
        //文件复制成功提示
        System.out.println("文件复制成功!!");

    }
}

//缓冲流:CopyFile
class TestBufferCopyFile {
    public static void main(String[] args) throws IOException {
        //源文件
        File file = new File("./src/abc.txt");
        //目标复制的文件
        File fileByCopy = new File("./src/abcs.txt");

        FileReader fileReader = null;
        FileWriter fileWriter = null;

        fileReader = new FileReader(file);
        fileWriter = new FileWriter(fileByCopy);

        //带缓冲功能处理流
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
        //建议用下面这。。。逻辑性很好
        //BufferedReader bufferedReader = new BufferedReader(new FileReader(new File("./src/abc.txt")));
        //BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(new File("./src/abcs.txt")));

        //使用方法:高效读取文本文件:bufferedReader.readLine();每次读取一行数据,如果没有数据则返回null
        String str;
        while ((str = bufferedReader.readLine()) != null) {
            bufferedWriter.write(str);//没有包含换行符
            bufferedWriter.newLine();//添加换行符
            //System.out.println(str);
        }
        //关闭流:只需要关闭外面的流
        bufferedReader.close();
        bufferedWriter.close();
        System.out.println("复制成功!!");
    }
}

//文件文本复制逻辑强的 Copy
class TestFileCopy {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new FileReader(new File("./src/abc.txt")));
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(new File("./src/abcs.txt")));

        //使用方法:高效读取文本文件:bufferedReader.readLine();每次读取一行数据,如果没有数据则返回null
        String str;
        while ((str = bufferedReader.readLine()) != null) {
            bufferedWriter.write(str);//没有包含换行符
            bufferedWriter.newLine();//添加换行符
            //System.out.println(str);
        }
        //关闭流:只需要关闭外面的流
        bufferedReader.close();
        bufferedWriter.close();
        System.out.println("复制成功!!");
    }
}

//图片copy:很明显不能使用字符流《字符流copy的图片是格式错误的,不能还原。
class TestImageCopy {
    public static void main(String[] args) throws IOException {
        //拓展图片加密:给图片加密  一个数被^两次就是这个数的本事。
        File image = new File("receive.jpg");
        //目标复制的文件
        File imageByCopy = new File("receiveCopy.jpg");


        //读取文件对象:输入流FileInputStream
        FileInputStream inputStream = new FileInputStream(image);
        //写文件对象:输出流FileOutputStream
        FileOutputStream outputStream = new FileOutputStream(imageByCopy);

        /*
        //加密图片
        int len2;
        while ((len2=inputStream.read())!=-1){
            outputStream.write(len2 ^12);
        }*/


       /* int len;
        byte[] bytes = new byte[1024];//自己的数组缓冲
        while ((len=inputStream.read(bytes))!=-1){
            outputStream.write(bytes,0,len);
        }*/

        //缓冲流
        BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
        long openMillis = System.currentTimeMillis();//当前时间戳

        int len;
        byte[] bytes = new byte[1024];//自己的数组缓冲
        while ((len = bufferedInputStream.read(bytes)) != -1) {
            bufferedOutputStream.write(bytes, 0, len);
        }
        long endMillis = System.currentTimeMillis();//当前时间戳
        //缓冲流比节点流要快的多》》》》》》
        outputStream.close();
        inputStream.close();
        System.out.println("image Copy  Success!!!"+(openMillis-endMillis));
    }

}

//转换流  :GBK--(UTF-8)
class TransferTest{
    public static void main(String[] args) throws Exception {
        FileInputStream fileInputStream = new FileInputStream(new File("./abc.txt"));

        FileOutputStream fileOutputStream = new FileOutputStream(new File("./abcA.txt"));
        //转换流
        InputStreamReader streamReader = new InputStreamReader(fileInputStream, "UTF-8");
        OutputStreamWriter outputWriter = new OutputStreamWriter(fileOutputStream,"UTF-8");

        int read;
        while ((read=streamReader.read())!=-1){
           outputWriter.write(read);
        }

        fileInputStream.close();
    }
}
复制代码

 

posted on   白嫖老郭  阅读(97)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示