• Java从零开始学三十五(JAVA IO- 字节流)


    一、字节流

    FileOutputStream是OutputStream 的直接子类
    FileInputStream也是InputStream的直接子类

    二、文本文件的读写

    2.1、字节输入流

     

    Test.txt文件内容
    abcdefg
    package com.pb.io;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    
    /*
     * FileInputStreamDemo读取文件
     */
    public class FileInputStreamDemo1 {
    
        public static void main(String[] args) {
            //1.声明文件对象,也可以跳过此步直接在第2步中写
            File f=new File("d:"+File.separator+"test"+File.separator+"test.txt"); 
            //FileInputStream fis=new FileInputStream("d:/test/hello.txt");
            try {
                //2.创建FileInputStream对象并将file对象传入
                FileInputStream fis=new FileInputStream(f);
                //3.定义整型变量用来存放内容
                int date;
                //4先查看文件可以读取的字节类available()方法获取文件的字节数
                System.out.println("可读取的字节数:"+fis.available());
                System.out.println("=========开始读取文件==========");
                //5读取文件read()方法
                System.out.println("========没有转换前输出=======");
                while((date=fis.read())!=-1){   //!=-1说明文件还有内容=-1时,就说明文件内容读完结束
                    
                    System.out.println(date+"	");
    
                }
                System.out.println("=======文件读取结束=========");
                //关闭流
                fis.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            
    
        }
    
    }

    结果:

    可读取的字节数:7
    =========开始读取文件==========
    ========没有转换前输出=======
    97    
    98    
    99    
    100    
    101    
    102    
    103    
    =======文件读取结束=========

    结果:并不是文件中的内容

    修改上面的文件:

    package com.pb.io;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    
    /*
     * FileInputStreamDemo读取文件
     */
    public class FileInputStreamDemo1 {
    
        public static void main(String[] args) {
            //1.声明文件对象,也可以跳过此步直接在第2步中写
            File f=new File("d:"+File.separator+"test"+File.separator+"test.txt"); 
            //FileInputStream fis=new FileInputStream("d:/test/hello.txt");
            try {
                //2.创建FileInputStream对象并将file对象传入
                FileInputStream fis=new FileInputStream(f);
                //3.定义整型变量用来存放内容
                int date;
                //4先查看文件可以读取的字节类available()方法获取文件的字节数
                System.out.println("可读取的字节数:"+fis.available());
                System.out.println("=========开始读取文件==========");
                //5读取文件read()方法
                System.out.println("========转换后转出=======");
                while((date=fis.read())!=-1){   //!=-1说明文件还有内容=-1时,就说明文件内容读完结束
                    char c=(char)date;
                    System.out.println(c+"	");
                }
                System.out.println("=======文件读取结束=========");
                //6.关闭流
                fis.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            
    
        }
    
    }

    结果:

    可读取的字节数:7
    =========开始读取文件==========
    ========转换后转出=======
    a    
    b    
    c    
    d    
    e    
    f    
    g    
    =======文件读取结束=========

    小结:FileInputStream

    1.read()读取内容,是返回int值

    2.需要转换字符

    3.read()方法是单程的,

    4.一定要关闭流

    2.2、字节输出流

    package com.pb.io;
    
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Scanner;
    
    public class FileOutputStreamDemo1 {
    
        public static void main(String[] args) {
            
            try {
                //1.实例化FileOutputStream对象,在文件的末尾追加内容
                FileOutputStream fos=new FileOutputStream("d:/test/test.txt",true);
                //2.创建他写入的字符串
                Scanner input=new Scanner(System.in);
                System.out.println("请输入要写入文件的内容:");
                String    str=input.next();
                    //3.将内容转换为字节数组
                byte[] bytes=str.getBytes();
                //4.将内容写入
                fos.write(bytes,0,bytes.length);  //3个参数的方法,从0开始到数组结束的全部写入
                System.out.println("文件写入结束!");
                //5.关闭流
                fos.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
    
        }
    
    }

    结果:

    请输入要写入文件的内容:输入e结束
    好好学习,天天向上 hello java!
    文件写入结束!

    test.txt

    abcdefg好好学习,天天向上

    在进行写操作时,如果文件不存在,将自动创建这个文件,如果上面没test.txt,将会自动创建这个文件,可以试下,将文件删除再运行

     三、综合使用

    package pb.io.file;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Scanner;
    
    /**
     * 拷贝文件
     * @author 北大青鸟
     *
     */
    public class CopyFile {
    
        public static void main(String[] args) {
            Scanner input=new Scanner(System.in);
            int date=0;
            System.out.print("请输入您要拷贝的源文件:");
            String file1=input.next();
            System.out.print("请输入您要拷贝的目标位置:");
            String file2=input.next();
            try {
                FileInputStream fis = new FileInputStream(file1);
                FileOutputStream fos = new FileOutputStream(file2);
                while((date=fis.read())!=-1){//读取文件
                    char c=(char)date;
             fos.write(c); } fis.close(); fos.close(); System.out.println(
    "拷贝成功!"); } catch (FileNotFoundException e) { System.out.println("源文件未找到!"); } catch (IOException ex) { System.out.println(ex.toString()); } } }
  • 相关阅读:
    yocto/bitbake 学习资源
    QEMU/KVM学习资源
    ubuntu 中创建和删除用户
    git 重命名本地和远程分支
    Ubuntu 上搭建 FTP 服务器
    gdb 常见用法
    git log 显示与特定文件相关的 commit 信息
    基于 qemu system mode 运行 arm 程序
    基于 qemu user mode 运行 aarch64 程序
    checking in(airport)
  • 原文地址:https://www.cnblogs.com/liunanjava/p/4307111.html
Copyright © 2020-2023  润新知