IO流 Java

news2024/12/23 14:37:55

IO 字节输入流

1:我使用while遍历

用循环来遍历文件里的数据

读取性能很差
读取汉字和维语字 会乱码 无法避免的

流使用完毕之后 必须关闭 释放系统资源

out.close();//关闭流

package IO_TEST;

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

import java.io.InputStream;

public class fileInmputStreamTest {
    public static void main(String[] args) throws Exception {

        // FileInputStream 字节输入流
     //   InputStream is = new FileInputStream(new File("\\src\\mamat01.txt"));
        InputStream is = new FileInputStream(("src/mamat01.txt")); //缩写 推荐使用

        //读取字节数据
        // public int read ();  每一次读取一个字节返回 如果招不到数据 返回(-1)
        /*int i1= is.read();
        System.out.println((char)i1);
        int i2= is.read();
        System.out.println((char)i2);
        int i3= is.read();
        System.out.println((char)i3);
*/


        //用循环来遍历文件里的数据
        int Q; //记住变量
        while ((Q=is.read())!=-1){
            System.out.print((char)Q);
        }
        //读取性能很差
        //读取汉字和维语字 会乱码 无法避免的1
        //流使用完毕之后 必须关闭 释放系统资源

        is.close();


    }
}

2:使用字节数组读取

性能提升但是 还是无法避免汉字和维语字

package IO_TEST;

import java.io.FileInputStream;
import java.io.InputStream;

public class fileInmputStreamTest2 {
    public static void main(String[] args) throws Exception {
            //目标:掌握 FileInputStream 读取多个字节

        InputStream is = new FileInputStream("src/mamat02.txt");

/*
            //读取文件中的多个字节
        byte[] buffer=new byte[3];
        int lun = is.read(buffer);
        String st=new String(buffer,0,lun) ;
        System.out.println(st);
        System.out.println("当前读取的字节数量:"+lun);
        //2  读取多少 列出多少
        byte[] buffer1=new byte[2];
        int lun1 = is.read(buffer);
        String st1=new String(buffer ,0,lun1) ;
        System.out.println(st1);
        System.out.println("当前读取的字节数量:"+lun1);*/



         //性能提升了
        //还是无法避免汉字和维语字
        byte[] buffer=new byte[3];  //数组  3个字节
        int lun;   //记住变量
        while ((lun=is.read(buffer))!=-1){
            var st=new String(buffer, 0, lun);
            System.out.print(st);

        }
             is.close();   //关闭流
    }
}

3:使用文件输入流一次读完文件的全部字节

package IO_TEST;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

public class fileInmputStreamTest3 {
    public static void main(String[] args) throws Exception {

     //1:使用文件输入流一次读完文件的全部字节
        //InputStream 抽象类   FileInputStream 实现类
        // 2: 创建输入管道与原文件接通
        InputStream is = new FileInputStream(("src/mamat03.txt")); //缩写 推荐使用

       /* //3: 准备一个字节数组 大小与文件的一样大
        //创建一个文件对象
        File f=new File("src/mamat03.txt");
        //获取文件的大小
        long size=f.length();
        //创建字节数组对象
        byte[] buffer=new byte[(int) size];
        int len = is.read(buffer);
        System.out.println(new String(buffer));

        System.out.println(len);
        System.out.println(size);*/
       byte[] buffer= is.readAllBytes();
        System.out.println(new String(buffer));

        is.close();


    }
}

1:字节输出流

 OutputStream字节输出流

package IO_TEST;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

public class fileOutputStreamTest {
    //目标:掌握文件输出流fileOutputStream 的作用
    public static void main(String[] args) throws Exception {
       // 1:创建一个字节流输出流管道与目标文件接通
        //默认是覆盖 原来的数据
        //默认是false
        //改成true 追加数据管道
        OutputStream out=new FileOutputStream("D:\\untitled1\\src\\Outmamat.txt",true);

        //2:写入字节数字
        out.write(97);  ///97代表a
        out.write('b');  //b也是一个字节
        //用一个字节的时候有不要写汉字和维吾尔字 出现会乱码

        byte[] bytearr="我爱你中国abc".getBytes();
        out.write(bytearr);
        out.write(bytearr,0,15);
                //字节数组  开始索引  多少个字节


        //换行符号
       out.write( "\r\n".getBytes());

        out.close();//关闭流


    }
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用《斗破苍穹》的视角打开C#委托2 委托链 / 泛型委托 / GetInvocationList

委托链 经过不懈地努力,我终于成为了斗师,并成功掌握了两种斗技——八极崩和焰分噬浪尺。于是,我琢磨着,能不能搞一套连招,直接把对方带走。 using System; using System.Collections.Generic; using System.Linq; u…

项目环境搭建

注册中心网关配置 spring:cloud:gateway:globalcors:add-to-simple-url-handler-mapping: truecorsConfigurations:[/**]:allowedHeaders: "*"allowedOrigins: "*"allowedMethods:- GET- POST- DELETE- PUT- OPTIONroutes:# 平台管理- id: useruri: lb://…

基于SpringBoot的植物健康系统

目录 前言 一、技术栈 二、系统功能介绍 系统首页 咨询专家 普通植物检查登记 珍贵植物检查登记 植物救治用料登记 植物救治材料管理 植物疾病案例管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&am…

使用MATLAB进行傅里叶变换

1、定义 T1;% 周期0-1 N20;% 最大谐波 k-N:N;% -20:20——-20表示a_(20)e^(j*20*w0*t) N1length(k);%N141 % ceil(N1/2)21%即21是N1的中位数tlinspace(0,T,100); Ntlength(t); ttlinspace(-4*T,4*T,1024); Nttlength(tt);2、原函数 w02*pi/T; % 0-T xt(t>T/4).* 1.0; fig…

支付宝sdk商户私钥 如何生成?

1、先下载密钥工具 https://opendocs.alipay.com/isv/02kipk 2、安装后生成密钥 3、配置密钥 4、将工具生成的公钥复制进去生成公钥 简单来说就是私钥是用工具生成的,不会在页面上显示 商户私钥 支付宝公钥

Python-Scrapy框架(框架学习)

一、概述 Scrapy是一个用于爬取网站数据的Python框架,可以用来抓取web站点并从页面中提取结构化的数据。 基本组件: 引擎(Engine):负责控制整个爬虫的流程,包括调度请求、处理请求和响应等。 调度器(Scheduler):负责…

基于SSM的资源共享平台设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

基于YOLOv8模型的车载摄像头下车辆目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要:基于YOLOv8模型的车载摄像头下车辆目标检测系统可用于日常生活中检测与定位车辆目标,利用深度学习算法可实现图片、视频、摄像头等方式的目标检测,另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算…

源码, AST, IR, CFG之间的关系梳理

在上一篇文章“代码检查过程中为什么需要涉及到编译呢?”中,有提到SAST代码检查工具里编译过程会经历哪些阶段,里面有提到: 一般来说,完整的编译过程会经历:对源代码进行词法、语法、语义的分析&#xff0c…

一个爱国者的润学日记-十月

首先需要科学的准备面试和润。如何进行科学的准备工作呢? 高效的按照面试考察内容进行针对性训练,按 Machine-learning-interview准备保证处于专注的心态,如今互联网娱乐发达,之前即使比赛时我也是一边比赛一边看视频。之后准备面…

10.07hw

int main() {string str;cout << "输入字符串:";getline(cin,str);int size str.size();int big 0;int small 0;int num 0;int space 0;int other 0;for(int i0;i<size;i){if(str[i]<Z&&str[i]>A){big;}else if(str[i]<z&&st…

黑客帝国代码雨

黑客帝国代码雨奉上,之前一直想写,但一直没抽出时间来,今天把他写了,也算了了装心事 效果图如下 原理就不讲了,代码写的很清楚而且不长 有不懂的评论区问我就好 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8">&l…

UniApp创建项目HelloWorld

浏览器预览效果镇楼 普通项目创建 点击创建完成后&#xff0c;就如下所示 确实和微信小程序开发差不多。只是稍微换了一个名字的概念了&#xff0c;这个就是开发嘛&#xff0c;不要过于纠结概念性东西。开发开发&#xff0c;开了就知道怎么发了&#xff1f; 或许是 反正write就…

vue 项目打包性能分析插件 webpack-bundle-analyzer

webpack-bundle-analyzer 是 webpack 的插件&#xff0c;需要配合 webpack 和 webpack-cli 一起使用。这个插件可以读取输出文件夹&#xff08;通常是 dist&#xff09;中的 stats.json 文件&#xff0c;把该文件可视化展现&#xff0c;生成代码分析报告&#xff0c;可以直观地…

【赠书活动】浅谈C#中垃圾回收机制

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

初识链表(7.25)

前面我们学习了顺序表&#xff0c;但顺序表其实存在一些问题 1. 中间/头部的插入删除&#xff0c;时间复杂度为O(N) 2. 增容需要申请新空间&#xff0c;拷贝数据&#xff0c;释放旧空间。会有不小的消耗&#xff08;尤其是异地扩容&#xff09;。 3. 增容一般是呈2倍的增长&am…

大语言模型之十六-基于LongLoRA的长文本上下文微调Llama-2

增加LLM上下文长度可以提升大语言模型在一些任务上的表现&#xff0c;这包括多轮长对话、长文本摘要、视觉-语言Transformer模型的高分辨4k模型的理解力以及代码生成、图像以及音频生成等。 对长上下文场景&#xff0c;在解码阶段&#xff0c;缓存先前token的Key和Value&#…

数据结构(2-5~2-8)

2-5编写算法&#xff0c;在单链表中查找第一值为x的结点&#xff0c;并输出其前驱和后继的存储位置 #include<stdio.h> #include<stdlib.h>typedef int DataType; struct Node {DataType data; struct Node* next; }; typedef struct Node *PNode; …

【高并发优化手段】基于Springboot项目

文章目录 一、概述二、服务器配置1. 选择合适的机器2. 配置服务器参数&#xff08;1&#xff09;TCP网络层参数如何配置 &#xff08;2&#xff09;文件系统参数仅根据硬件配置&#xff0c;估算机器的最大性能修改配置 &#xff08;3&#xff09;内存参数 三、Tomcat配置1. 调整…

11.2 基本电路和基本分析方法

一、基本电路 电路类型电路名称特点和典型功能指标参数或功能描述方法基本放大电路共射放大 ∣ A ˙ ∣ |\dot A| ∣A˙∣大&#xff1b;适用于小信号电压放大 A ˙ u \dot A_u A˙u​、 R i R_i Ri​、 R o R_o Ro​、 f L f_L fL​、 f H f_H fH​、 f b w f_{bw} fbw​共集…