zoukankan      html  css  js  c++  java
  • Java-IO流系列-FileInputStream和FileOutStream

    FileInputStream和FileOutStream

    测试FileInputstream和FileOutpuStream的使用

    结论:

    1. 对于文本文件(. txt,.java,.c..cpp),使用字符流处理

    2. 对于非文本文件( . jpg ,.mp3, . mp4, .avi,.doc.ppt....), 使用字节流处理

    3. 使用字节流FileInputstream处理文本文件, 可能出现乱码

    package com.dreamcold.io;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    
    public class Demo05 {
        public static void main(String[] args) {
            FileInputStream fis=null;
            try {
                //造文件
                File file=new File("test.txt");
    
                //造流
                fis=new FileInputStream(file);
    
                //读取数据
                byte[] buff=new byte[5];
                int len;
                while((len=fis.read(buff))!=-1){
                    String str=new String(buff,0,len);
                    System.out.println(str);
                }
            }catch (IOException e){
                e.printStackTrace();
            }finally {
                try {
                    if (fis!=null){
                        fis.close();
                    }
                }catch (IOException e){
                    e.printStackTrace();
                }
            }
    
        }
    }
    

    结果

    image-20210117200527012

    对非文本文件的复制

    package com.dreamcold.io;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class Demo06 {
        public static void main(String[] args) {
            FileInputStream fis=null;
            FileOutputStream fos=null;
            try {
                File srcFile=new File("image.jpg");
                File destFile=new File("image1.jpg");
                fis=new FileInputStream(srcFile);
                fos=new FileOutputStream(destFile);
    
                byte[] buff=new byte[5];
                int len;
                while ((len=fis.read(buff))!=-1){
                    fos.write(buff,0,len);
                }
            }catch (IOException e){
                e.printStackTrace();
            }finally {
                try {
                    if (fis!=null){
                        fis.close();
                    }
                }catch (IOException e){
                    e.printStackTrace();
                }
                
                try {
                    if (fos!=null){
                        fos.close();
                    }
                }catch (IOException e){
                    e.printStackTrace();
                }
            }
    
        }
    }
    

    效果

    image-20210117201522740
    • 该函数可以封装成为一个复制文件的函数
    • 注意缓冲的buf大小最好为1024
  • 相关阅读:
    【转】【C++】【MFC】各种数据类型大小
    【转】【C++】【MFC】关于RADIO BUTTON的使用方法
    【C++】【MFC】创建新的线程函数
    【C++】【MFC】定义全局变量的方法
    【Quartus错误】Internal Error: Sub-system: AMERGE
    【转/TCP协议编程】 基于TCP的Socket 编程
    SQL递归查询(with as)
    SQL查询月、天、周、年(MySql的实例对比)
    sql 基础语句
    经典SQL语句大全
  • 原文地址:https://www.cnblogs.com/mengxiaoleng/p/14940201.html
Copyright © 2011-2022 走看看