• 【Java】IO流--文件字节流--FileInputStream、FileOutputStream


    FileInputStream

    作用:

    文件系统中的文件获取输入字节。 什么文件可用取决于主机环境。用于读取诸如图像数据的原始字节流。

     

    构造方法:

    FileInputStream(File file)

    通过打开与实际文件的连接创建一个 FileInputStream ,该文件由文件系统中的 File对象 file命名。

    FileInputStream(String name)

    通过打开与实际文件的连接来创建一个 FileInputStream ,该文件由文件系统中的路径名 name命名。
     

    常用方法

    available()

    返回从此输入流中可以读取(或跳过)的剩余字节数的估计值,而不会被下一次调用此输入流的方法阻塞。
    read()
    从该输入流读取一个字节的数据。
    read(byte[] b)
    从该输入流读取最多 b.length个字节的数据为字节数组。
    read(byte[] b, int off, int len)
    从该输入流读取最多 len字节的数据为字节数组。
    close()
    关闭此文件输入流并释放与流相关联的任何系统资源。
     

    代码

     

    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    
    public class TestFileInputStream {
        public static void main(String[] args) throws IOException {
            //(1)数据源与应用程序之间搭建管道
            FileInputStream fis=new FileInputStream("F://test.txt");
            
            //(2)从数据源开始向应用程序中读数据
            int len=0;//存储读到的字节
            //中转站比较小,一次只读一个字节
            
            while((len=fis.read())!=-1) {
                System.out.print((char)len);
            }
            
            //(3)关闭
            fis.close();
        }
    }

     

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    
    public class TestFileInputStream {
        public static void main(String[] args) throws IOException {
            //(1)搭桥
            FileInputStream fis=new FileInputStream(new File("F://test.txt"));
            
            //(2)创建大一点的中转站
            byte[] buf=new byte[1024];
            int len=0;//用于储存每次读到的实际字节
            
            while((len=fis.read(buf))!=-1) {
                System.out.print(new String(buf,0,buf.length));
            }
            
            //(3)关闭
            fis.close();
        }
    }

     FileOutStream

     作用:

    文件输出流是用于将数据写入到输出流File或一个FileDescriptor 。 文件是否可用或可能被创建取决于底层平台。 特别是某些平台允许一次只能打开一个文件来写入一个FileOutputStream (或其他文件写入对象)。 在这种情况下,如果所涉及的文件已经打开,则此类中的构造函数将失败。

    用于写入诸如图像数据的原始字节流。

     

    构造方法:

    FileOutputStream(File file)

    创建文件输出流以写入由指定的 File对象表示的文件。

    FileOutputStream(File file, boolean append)

    创建文件输出流以写入由指定的 File对象表示的文件。

    apeend=true 时,表示当文件存在且不为空时再原有文件的基础上进行内容的追加。

    FileOutputStream(String name)

    创建文件输出流以指定名称写入文件。

    FileOutputStream(String name, boolean append)

    创建文件输出流以指定名称写入文件。

    apeend=true 时,表示当文件存在且不为空时再原有文件的基础上进行内容的追加。

     

    常用方法:

    write(int b)

    将指定的字节写入此文件输出流。
    write(byte[] b)
    将  b.length 个字节从指定的字节数组写入此文件输出流。
    write(byte[] b, int off, int len)
    len字节从位于偏移量 off的指定字节数组写入此文件输出流。
    close()
    关闭此文件输出流并释放与此流相关联的任何系统资源。

     

    代码

     

    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class TestFileOutputStream {
        public static void main(String[] args) {
            //(1)搭桥
            FileOutputStream fos=null;
            try {
                fos = new FileOutputStream("F://test.txt",true);//true如果磁盘上有文件,而且文件有内容,将在原来的内容的基础上进行追加
                //写数据,一次写一个字节
                //fos.write(97);
                //(2)写数据,一次写多个字节
                byte[] buf="fff".getBytes();
                
                fos.write(buf);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally {
                try {
                    if(fos!=null) {
                        //(3)关闭
                        fos.close();
                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            
        }
    }

     

    使用文件字节流实现文件复制

    文件复制的原理

     

     代码

    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class TestFileIO {
        public static void main(String[] args) {
            FileInputStream fis=null;
            FileOutputStream fos=null;
            
            try {
                //数据源是文件
                fis=new FileInputStream("F://test.txt");
                //目的地
                fos=new FileOutputStream("F://target.txt");
                
                byte[] flush=new byte[1024];
                int len=0;
                
                while((len=fis.read(flush))!=-1) {
                    fos.write(flush, 0, len);
                }
                
                /*
                 * int b=0;
                 * 
                 * while((b=fis.read())!=-1){ fos.write(b); }
                 */
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally {
                try {
                    if(fos!=null) {
                        fos.close();
                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    if(fis!=null) {
                        fis.close();
                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            
            
        }
    }

     

     

  • 相关阅读:
    vue-element-admin项目install出现的问题
    关于html5 Notification桌面通知无法在谷歌浏览器显示的问题
    C#调用存储过程执行缓慢,但在数据库中执行却很快的问题
    IdnentiyServer-使用客户端凭据访问API
    IdentityServer开题篇
    IdentityServer4客户端JWT解密实现(基于.net4.0)
    iis访问网络路径映射问题(UNC share)
    .net core部署在iis上
    git blame 查找修改者
    代码管理工具-将项目文件打成tar包,并且排除.git目录
  • 原文地址:https://www.cnblogs.com/syxy/p/12262003.html
Copyright © 2020-2023  润新知