java 当中的流

初识io

代码演示

     private final static String URL = "E:\\";
     private final static String READURL = "H:\\kj\\202402\\LS0205.00P";


    @Test
    public void testOutputStream() {
        long start = System.currentTimeMillis();
        try (
                InputStream in = new FileInputStream( READURL );
                OutputStream out = new FileOutputStream( URL + "FileOutputStream输出流.txt" );
        ) {
            int len;
            while ((len = in.read()) != -1) {
                out.write( (char) len );
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        long end = System.currentTimeMillis();
        System.out.println( "消耗时间" + (end - start) / 1000.0 + "秒" );
    }

    @Test
    public void testOutputStreamSz() {
        long start = System.currentTimeMillis();
        try (
                InputStream in = new FileInputStream( READURL );
                OutputStream out = new FileOutputStream( URL + "FileOutputStream输出流字节数组.txt" );
        ) {
            byte[] bytes = new byte[1024 * 80];
            int lent;
            while ((lent = in.read( bytes )) != -1) {
                out.write( bytes, 0, lent );
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        long end = System.currentTimeMillis();
        Runtime runtime = Runtime.getRuntime();
        System.out.println( "最大可用内存: " + runtime.maxMemory() / 1024 );
        System.out.println( "已分配内存: " + runtime.totalMemory() / 1024 );
        System.out.println( "可用内存: " + runtime.freeMemory() / 1024 );
        System.out.println( "已使用内存: " + (runtime.totalMemory() - runtime.freeMemory()) / 1024 );
        System.out.println( "消耗时间" + (end - start) / 1000.0 + "秒" );
         /* 最大可用内存: 253440
            已分配内存: 15872
            可用内存: 11551
            已使用内存: 4320
            消耗时间1.343秒*/
    }

    @Test
    public void testBufferedSz() {
        long start = System.currentTimeMillis();
        try (
                InputStream inputStream = new FileInputStream( READURL );
                BufferedInputStream in = new BufferedInputStream( inputStream, 1024 * 80 );  
                OutputStream outputStream = new FileOutputStream( URL + "Buffered输出流字节数组.txt" );
                OutputStream out = new BufferedOutputStream( outputStream, 1024 * 80 );
        ) {
            byte[] bytes = new byte[1024 * 80];
            int lent;
            while ((lent = in.read( bytes )) != -1) {
                out.write( bytes, 0, lent );
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        long end = System.currentTimeMillis();
        Runtime runtime = Runtime.getRuntime();
        System.out.println( "最大可用内存: " + runtime.maxMemory() / 1024 );
        System.out.println( "已分配内存: " + runtime.totalMemory() / 1024 );
        System.out.println( "可用内存: " + runtime.freeMemory() / 1024 );
        System.out.println( "已使用内存: " + (runtime.totalMemory() - runtime.freeMemory()) / 1024 );
        System.out.println( "消耗时间" + (end - start) / 1000.0 + "秒" );
        /*   最大可用内存: 253440
            已分配内存: 15872
            可用内存: 11572
            已使用内存: 4299
            消耗时间1.156秒* */
    }


    @Test
    public void testFileReaderSz() {
        long start = System.currentTimeMillis();
        try (
                Reader in = new FileReader( READURL );
                Writer out = new FileWriter( URL + "FileReaderSz输出流字符数组.txt" );
        ) {
            char[] chars = new char[1024 * 80];
            int lent;
            while ((lent = in.read( chars )) != -1) {
                out.write( chars, 0, lent );
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        long end = System.currentTimeMillis();
        Runtime runtime = Runtime.getRuntime();
        System.out.println( "最大可用内存: " + runtime.maxMemory() / 1024 );
        System.out.println( "已分配内存: " + runtime.totalMemory() / 1024 );
        System.out.println( "可用内存: " + runtime.freeMemory() / 1024 );
        System.out.println( "已使用内存: " + (runtime.totalMemory() - runtime.freeMemory()) / 1024 );
        System.out.println( "消耗时间" + (end - start) / 1000.0 + "秒" );
        /*  最大可用内存: 253440
            已分配内存: 15872
            可用内存: 11407
            已使用内存: 4464
            消耗时间5.171秒 */
    }

    @Test
    public void testBufferedReaderSz() {
        long start = System.currentTimeMillis();
        try (
                Reader reader = new FileReader( READURL );
                BufferedReader in = new BufferedReader( reader, 1024 * 80 );
                Writer writer = new FileWriter( URL + "BufferedReader输出流字符数组.txt" );
                BufferedWriter out = new BufferedWriter( writer, 1024 * 80 );
        ) {
            char[] chars = new char[1024 * 80];
            int lent;
            while ((lent = in.read( chars )) != -1) {
                out.write( chars, 0, lent );
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        long end = System.currentTimeMillis();
        Runtime runtime = Runtime.getRuntime();
        System.out.println( "最大可用内存: " + runtime.maxMemory() / 1024 );
        System.out.println( "已分配内存: " + runtime.totalMemory() / 1024 );
        System.out.println( "可用内存: " + runtime.freeMemory() / 1024 );
        System.out.println( "已使用内存: " + (runtime.totalMemory() - runtime.freeMemory()) / 1024 );
        System.out.println( "消耗时间" + (end - start) / 1000.0 + "秒" );
        /* 最大可用内存: 253440
            已分配内存: 15872
            可用内存: 11376
            已使用内存: 4495
            消耗时间5.015秒 * */
    }

    @Test
    public static void testWrit() {
        try (
                BufferedReader reader = new BufferedReader( new FileReader( "src/test/java/tjqs/hy/file.txt" ) );
                BufferedWriter writer = new BufferedWriter( new FileWriter( "src/test/java/tjqs/hy/file1.txt", true ) ); //有TRUE不会覆盖以前的数据,没有或者是FALSE就会覆盖原来的数据  不使用多态的原因是要使用BufferedInputStream这个安行读取的方法,如果不使用readLin方法就可以使用多台
        ) {
            String len;
            while ((len = reader.readLine()) != null) {
                writer.write( len, 0, len.length() );
                writer.write( "\n" );
            }
            System.out.println( "=======================" );
        } catch (Exception e) {
            e.printStackTrace();
        }

    }


    //字节转换流,当文件编码跟代码编码不一致是
    @Test
    public static void testZj() {

        try (
                //原始文件
                InputStream in = new FileInputStream( "src/test/java/tjqs/hy/file_gbk.txt" );
                //目标文件
                BufferedWriter out = new BufferedWriter( new FileWriter( "src/test/java/tjqs/hy/file_gbk1.txt" ) );
                //把原始的字节输入流按照指定的字符集编码转换成字符流编码
                Reader is = new InputStreamReader( in, "GBK" );  //in:是流通到,"GBK":是原始文件的文件编码   对应的代码是utf-8 
                //把字符集输入流包装成缓冲字符输入流
                BufferedReader bufferedReader = new BufferedReader( is );
        ) {

            String len;
            while ((len = bufferedReader.readLine()) != null) {
                out.write( len, 0, len.length() );
                out.write( "\n" );
            }

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


    }

图形解释

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/572897.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RC电路延时时间常数在线计算器

RC电路延时时间常数在线计算器: https://www.838dz.com/calculator/1888.html 急用时,找不到。

古籍数字化平台中的OCR:这个平台更精准

在浩瀚的历史长河中,古籍作为中华民族的文化瑰宝,承载着无数先人的智慧与心血。然而,由于岁月侵蚀、保存不当等多种原因,许多珍贵的古籍面临损坏、失传的危机。为了守护这些无价之宝,云聪研发团队倾力打造了一款尖端的…

portaudio 怎么调用获取输出流

PortAudio是一个跨平台的音频I/O库,它允许你访问计算机的音频硬件进行录音和播放。要使用PortAudio获取输出流(播放流),你需要遵循以下步骤: 官方下载地址:PortAudio - an Open-Source Cross-Platform Audi…

AIGC技术的探索与展望:跨界融合与科技变革

文章目录 前言一、AIGC技术的现状与特点二、AIGC技术在各个领域的应用三、AIGC技术对未来社会的影响四、AIGC技术的可能发展方向 前言 随着科技的飞速发展,人工智能与大数据的结合日益紧密,AIGC(人工智能生成内容)技术作为这一领域…

Linux——web基础实验

实验前的安装 [rootwebserver ~]# yum -y install httpd [rootwebserver ~]# systemctl enable --now httpd Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service. [rootwebserver ~]# echo test for apach…

Linux入门攻坚——20、systemd、(sysvinit、upstart重温)

再一次讲到Linux系统启动流程: POST --> Boot Sequence --> Bootloader(grub) --> kernel initramfs(initrd) --> rootfs --> /sbin/init 对于init,即系统内核加载完毕后(加载kernel和切换根文件系统)运行…

源代码开发企业的防泄密该怎么做

在源代码开发企业中,保护产品的知识产权和源代码安全是至关重要的。尤其是在面对Java等易被反编译的语言时,加密和保护源代码就显得尤为重要。针对这一挑战,SDC沙盒提供了一系列全面的解决方案,为企业源代码的安全保驾护航。 源代…

BSV区块链协会上线首个版本的ARC交易处理器

​​发表时间:2024年3月28日 BSV区块链协会近期上线了首个版本的ARC交易处理器。ARC是一项区块链交易处理服务,能在通过P2P网络广播交易之前验证并存储相关的交易。一旦新区块被挖出,一条与该交易相关的Merkle路径将被发回给交易发起者作为确…

JavaScript-4.正则表达式、BOM

正则表达式 正则表达式包含在"/","/"中 开始与结束 ^ 字符串的开始 $ 字符串的结束 例: "^The":表示所有以"The"开始的字符串("There"、"The cat"等&#x…

JavaSE-14笔记【反射机制(+2024新)】

文章目录 1.反射机制概述2.获取Class的四种方式3.通过反射机制实例化对象*4.反射机制结合配置文件灵活实例化对象*5.java.lang.reflect.Field5.1反编译类中的所有字段/属性5.2 通过反射机制给属性赋值* 6.java.lang.reflect.Method6.1反编译类中的所有方法6.2 通过反射机制调用…

六个月滴滴实习:轻松、舒心又高薪!

不久前,一位在滴滴后端研发部门实习了六个月的小伙伴在牛客网上分享了他的实习体验, 作者详细描述了他在滴滴的实习生活。 从他的叙述中,我们可以感受到与其他互联网公司相比,滴滴的工作环境显得相对轻松和舒适。 他提到&#x…

Spring Boot-基础操作,常用工具,配置文件

lombok工具 首先将lombok的依赖引入 Lombok是一个实用的Java类库,能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,并可以自动化生成日志变量,简化java开发、提高效率。 日志操作 自定义日志打印 有以下两步: 在一个类中先获…

Https协议原理剖析【计算机网络】【三种加密方法 | CA证书 】

目录 一,fidler工具 前提知识 二,Https原理解析 1. 中间人攻击 2. 常见的加密方式 1). 对称加密 2). 非对称加密 对称加密 4). CA证书 1. 数据摘要 3. 数字签名 CA证书 理解数据签名 存在的安全疑问&am…

根据当年节假日和非工作时间计算请假时间-获取每个月的节假日,计算每个月的工作日时间进度,节假日每年更新

根据需求请假时间要排除法定节假日和非工作时间 1.获取当年的节假日 节假日是每年更新的,没有固定接口,需要手动录入 个人根据官方的节假日整理了当年的所有节假日,可以根据个人需求进行修改 // 获取每个月的节假日,如果当月没…

数据结构入门——排序(代码实现)(下)

int GetMidi(int* a, int left, int right) {int mid (left right) / 2;// left mid rightif (a[left] < a[mid]){if (a[mid] < a[right]){return mid;}else if (a[left] > a[right]) // mid是最大值{return left;}else{return right;}}else // a[left] > a[mid…

c++二叉树的进阶--二叉搜索树

1. 二叉搜索树的概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树: 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值 若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根节点的值 它的左…

R-Tree与其他空间索引结构的对比

文章目录 R-Tree vs Quadtree/OctreeR-Tree vs kd-TreeR-Tree vs BSP TreeR-Tree vs Hilbert R-Tree总结Python: 使用rtree库实现R-TreeJavaScript: 使用rbush库实现kd-Tree R-Tree是一种广泛使用的空间索引结构&#xff0c;尤其适用于处理多维空间数据。然而&#xff0c;还有其…

电脑上怎么调照片尺寸?怎么压缩图片为144×144

在一些社交媒体平台通常要求用户上传头像&#xff0c;并对其进行裁剪和调整大小&#xff0c;144x144像素是常见的头像尺寸之一&#xff0c;适合在社交媒体上展示个人头像或者小图标&#xff0c;为了可以保证图片的画质&#xff0c;我们尽量会选择专业的图片处理工具来完成操作。…

OpenAI推出强化企业级安全与成本管理新功能

欢迎大家在 GitHub 上 Star 我们&#xff1a; 分布式全链路因果学习系统 OpenASCE: https://github.com/Open-All-Scale-Causal-Engine/OpenASCE 大模型驱动的知识图谱 OpenSPG: https://github.com/OpenSPG/openspg 大规模图学习系统 OpenAGL: https://github.com/TuGraph-…

探索在Apache SeaTunnel上使用Hudi连接器,高效管理大数据的技术

Apache Hudi是一个数据湖处理框架&#xff0c;通过提供简单的方式来进行数据的插入、更新和删除操作&#xff0c;Hudi能够帮助数据工程师和科学家更高效地处理大数据&#xff0c;并支持实时查询。 支持的处理引擎 Spark Flink SeaTunnel Zeta 主要特性 批处理 流处理 精确一次性…