• Java IO流(二) 字节流InputStream和OutputStream


    InputStream是Java IO中所有字节输入流基类,它是一个抽象类,主要有如下方法

    当我们调用其子类的时候读取数据的有3个重载方法:
    int read() 从此输入流中读取一个数据字节。
    int read(byte[] b) 每次读取 b 数组长度的字节数,然后返回读取的字节,读到末尾时返回-1。
    int read(byte[] b,int off,int len) 每次读取 b 数组长度的字节数,从数组b 的索引为off 的位置开始,长度为len个字节。

    其中InputStream的子类FileInputStreams是专门用于从文件读取数据到程序(内存)
    新建foo.txt文件放在F盘下,其中内容是 HELLOJAVA

    package com.mike.io.eg;
    
    import java.io.File;
    import java.io.IOException;
    import java.io.FileInputStream;
    /**
     * @author mike
     * @date 2020-11-24
     * @desc 文件字节输入流demo
     */
    public class FileInputStreamDemo {
    	public static void main(String[] args) {
    		//定义输入流
    		FileInputStream fis = null;
    		try {
    			//创建文件对象
    			String filePath = "F:\foo.txt";
    			File file = new File(filePath);
    			//创建字节输入流对象
    			fis = new FileInputStream(file);
    			//定义字节数组,保存数据
    			byte[] buffer = new byte[5];
    			//保存实际读取的字节总数
    			int len = 0;
    			while((len = fis.read(buffer)) != -1 ) {
    				//解析字节为字符串
    				System.out.println(new String(buffer,0,len));
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally { 
    			try {
    				fis.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    
    		}
    	}
    }
    
    

    运行后查看结果输出

    有时候使用FileInputStream读取中文字符会出现乱码,这是因为UTF-8一个字符占3个字节,会出现一个汉字没有读完情况,要么加大byte[]容量,对于纯文本最好的办法是使用字符输入流

    InputStream是Java IO中所有字节输入流基类,它是一个抽象类,主要有如下方法

    • void write(int b):把一个字节写入到文件中。
    • void write(byte[] b):把数组b 中的所有字节写入到文件中。
    • void write(byte[] b,int off,int len):把数组b 中的字节从 off 索引开始的 len 个字节写入到文件中。

    OutputStream的子类FileOutputStream是专门用于将数据写入文件

    package com.mike.io.eg;
    
    import java.io.IOException;
    import java.io.File;
    import java.io.FileOutputStream;
    /**
     * @author mike
     * @date 2020-11-25
     * @desc 字节输出流demo
     */
    public class FileOutputStreamDemo {
    	public static void main(String[] args) {
    		//定义字节输出流
    		FileOutputStream fos = null;
    		try {
    			//创建文件对象
    			String filePath = "F:\foo.txt";
    			File file = new File(filePath);
    			//创建输出流对象
    			fos = new FileOutputStream(file);
    			//将字符串转化为字节数组并写入文件
    			fos.write("CHINA".getBytes("UTF-8"));
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				fos.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    }
    
    
    
  • 相关阅读:
    英文文法学习笔记(14)分词
    利用别名简化进入docker容器数据库的操作
    英文文法学习笔记(12)形容词
    小知识:在Exadata平台上使用ExaWatcher收集信息
    小知识:调整OCI实例的时区
    小知识:Docker环境缺少vi命令,如何解决
    小知识:Exadata平台去掉密码输错延迟10分钟登录
    英文文法学习笔记(13)副词
    SpringBoot,SpringMvc 参数校验 用法详解
    java 获取项目根路径、获取桌面路径
  • 原文地址:https://www.cnblogs.com/gy1010/p/14033219.html
Copyright © 2020-2023  润新知