FileInPutStream读取文件中内容

【1】读取文本文件

复制代码
package com.msb.io02;

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

/**
 * @author : liu
 * 日期:10:52:13
 * 描述:IntelliJ IDEA
 * 版本:1.0
 */
public class Test01 {
    //这是一个main方法:是程序的入口
    public static void main(String[] args) throws IOException {
        //功能:利用字节流将文件中内容读取到程序中来
        //1.有一个源文件
        File f=new File("d:\\test.txt");
        //2.将一个字节流  这个管怼到源文件上
        FileInputStream fp=new FileInputStream(f);
        //3.开始读取动作
        /*
        细节1:文件是UTF-8进行存储的,所以英文字符底层实际占用1个字节
        但是中文字符,底层实际占用3个字节
        细节2:如果文件是文本文件那么就不要使用字节流读取了,建议使用字符流
        细节3:read()读取一个字节,但是你有没有发现返回值是int类型,而不是byte类型?
        read()底层做了处理,让返回的数据都是“正数”
        就是为了避免如果字节返回返回的是-1的话,那么底层是读入的字节,还是到文件结尾呢。
        * */
        int n = fp.read();
        while (n!=-1){
            System.out.println(n);
            n=fp.read();
        }
        //4.关闭流
        fp.close();

    }
}
复制代码

【2】利用字节流读取非文本文件(以图片为例)----》一个字节一个字节的读取

复制代码
package com.msb.io02;
import java.io.*;

/**
 * @author : liu
 * 日期:11:31:01
 * 描述:IntelliJ IDEA
 * 版本:1.0
 */
public class Test02 {
    //这是一个main方法:是程序的入口
    public static void main(String[] args) throws IOException {
        File file= new File("d:\\lol.jpg");
        FileInputStream fis=new FileInputStream(file);
        int read = fis.read();
        int count=0;//加入一个计数器,用来记录读入的字节个数
        while (read!=-1){
            count++;
            read=fis.read();
        }
        System.out.println(count);
        fis.close();
    }
}
复制代码

【3】利用缓冲数组读取 ,字节类型的缓存数组

复制代码
package com.msb.io02;
import java.io.*;

/**
 * @author : liu
 * 日期:11:31:01
 * 描述:IntelliJ IDEA
 * 版本:1.0
 */
public class Test02 {
    //这是一个main方法:是程序的入口
    public static void main(String[] args) throws IOException {
        File file= new File("d:\\lol.jpg");
        FileInputStream fis=new FileInputStream(file);
        byte[] b=new byte[1024*6];
        int read = fis.read(b);//read指的就是读取的数组中有效长度
        while (read!=-1){
            for (int i = 0; i < read; i++) {
                System.out.println(b[i]);
            }
            read=fis.read(b);
        }
        fis.close();
    }
}
复制代码

 

posted @   爱的加勒比  阅读(921)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示