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
  • 相关阅读:
    二叉树的镜像(剑指offer-18)
    树的子结构(剑指offer-17)
    合并两个有序链表(剑指offer-16)
    OutOfMemory相关问题(内存溢出异常OOM)
    Java内存区域
    招银网络(一面06.29)
    反转链表(剑指offer-15)
    链表中倒数第k个节点(剑指offer-14)
    调整数组顺序使奇数位于偶数前面(剑指offer-13)
    数值的整数次方(剑指offer-12)
  • 原文地址:https://www.cnblogs.com/mengxiaoleng/p/14940201.html
Copyright © 2011-2022 走看看