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和c++的复杂类型声明
    STM32 NVIC学习
    stm32f10x_flash.c中文版
    IBM中国研究院Offer之感言——能力是一种态度
    对于STM32别名区的理解 (转载)
    STM32时钟学习之STM3210X_RCC.H解读
    STM32 DMA
    STM32 内部时钟输出PA.8(MCO)
  • 原文地址:https://www.cnblogs.com/mengxiaoleng/p/14940201.html
Copyright © 2011-2022 走看看