java基础之InputStream的使用

package com.xx.InputAndOutputStream;

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

public class InputStreamTesting {
    public static void main(String[] args) throws IOException {
        String dir="C:\\Users\\杨茜玲\\Desktop";
        String name="aa.txt";
        //生成一个dir文件下的名为name的文件
        File file=new File(dir,name);
        //将该文件传给输入流
        InputStream inputStream=new FileInputStream(file);
        //testRead(inputStream);
        //testSkip(inputStream);
        testReadByteArr(inputStream);
    }

    public static void testReadByteArr(InputStream inputStream) throws IOException{
        //需要一次性读取多个字符相当于读取一个数组,如果buf的长度为0,则不读取任何字节并返回0,每次读取的字节数最多等于buf的长度
        byte[] buf=new byte[1024];
        //定义一个变量用于判断是否读到了尾部
        int length;
        //length用于返回实际读取的字节数,再次读取时如果已经到达流末尾而没有可用的字符,则返回-1
        while ((length=inputStream.read(buf))!=-1){
            //System.out.println(length);
            System.out.println(new String(buf,0,length));
            //可以防止中文乱码,可换成UTF-8或者GBK
            //UTF-8和GBK的区别:操作的中文内容多则推荐GBK:GBK中英文也是两个字节,用GBK节省了空间;UTF-8 编码的中文使用了三个字节
            //如果是英文内容多则推荐UFT-8:因为UFT-8里面英文只占一个字节,UTF-8编码的中文使用了,三个字节
            //System.out.println(new String(buf,0,length,"GBK"));
            inputStream.close();
        }

    }

     public static void  testRead(InputStream inputStream) throws IOException{
        //输入流读取一个字节,在java中一个英文字母占一个字节,一个字符占两个字节,一个中文汉字属于一个字符,占两个字节
        int read=inputStream.read();
         System.out.println(read);
         System.out.println((char)read);
         inputStream.close();
     }

    public static void  testSkip(InputStream inputStream) throws IOException{
        //跳过前面两个字符
        long skipSize=inputStream.skip(2);
        System.out.println(skipSize);
        //跳过之后读取
        int read=inputStream.read();
        System.out.println((char)read);
        inputStream.close();
    }
}

上一篇:Java加载jar包外的配置文件,转为map获取参数


下一篇:看到Mybatis源码就感到烦躁,怎么办?