美文网首页java 从入门到精通
java 中的IO(字节流)

java 中的IO(字节流)

作者: Exception_Cui | 来源:发表于2021-05-27 14:38 被阅读0次

字符流

电脑中的所有的文件都已以字节存储
所以所有文件都可以以字符流来读取和存储

字符输入流(硬盘-->内存)

FileInputStream

package IOTest;

import java.io.FileInputStream;
import java.io.IOException;

/**
 * Created by kumamon on 2021/5/27.
 * <p>
 * 电脑中的所有文件都可以用字节来读取
 *
 * 字节输入流
 * 由 硬盘 ->输出到 内存
 */
public class FileInputStreamDemo {


    public static void main(String[] args) throws IOException {
        //inputStream1();
        inputStream2();
    }


    /**
     * 读取多个字节
     * */
    private static void inputStream2() throws IOException {

        FileInputStream fis = new FileInputStream("FileOutPutStrame2.txt");
        int len =0;
        byte[] bytes=new byte[1024];
        while ((len=fis.read(bytes))!=-1){
            String s = new String(bytes);                //结果为    字符串输出流   后面有1024-2*5个 空格
            String sss = new String(bytes,0,len);  //结果为    字符串输出流   有效的转换
            System.out.println(sss);
        }

    }


    /**
     * 读取单个字节
     *  int len = fis.read();
     *  len为 读取到的有效字节  没有了就为-1
     * */
    public static void inputStream1() throws IOException {
        FileInputStream fis = new FileInputStream("FileOutPutStrame2.txt");
        int len = fis.read();
        System.out.println(len);   // 字 的编码表 229   所以读出来也是229

    }
}

字符缓冲流(大文件的效率高)

其实就是增加了一块缓冲区
现将数据读取到缓冲区,
然后一次性读取缓冲区


    /**
     * 使用字节缓冲流读取文件
     *
     * 默认的读取方式  JAVA-->jvm->OS              一个一个读
     *
     * 缓冲流的读取方式 JAVA ——>jvm ->os(缓冲区)    缓冲区一次多个读
     *
     * */
    private static void bufferInputStream() throws IOException {
        FileInputStream fis=new FileInputStream("FileOutPutStrame2.txt");
        BufferedInputStream bis=new BufferedInputStream(fis);
        int len=0;
        byte[] bytes = new byte[1024];
        while ((len = bis.read(bytes)) != -1) {
            System.out.println(new String(bytes));
        }

    }


字符输出流(内存--->硬盘)

FileOutputStream

package IOTest;

import java.io.FileOutputStream;
import java.io.IOException;

/**
 * Created by kumamon on 2021/5/27.
 *
 *  字节输出流
 *  由 内存 ->输出到 硬盘
 */
public class FileOutputStreamDemo {


    public static void main(String[] args) throws IOException {

        //fileOutputStream1();

        //fileOutputStream2("字符串输出流");

        fileOutputStream();
    }


    /**
     * 存储多个字节
     * */
    private static void fileOutputStream2(String text) throws IOException {

        byte[] bytes = text.getBytes();

        FileOutputStream fos= null;
        try {
            fos = new FileOutputStream("FileOutPutStrame2.txt"); //此项目的根目录 E:\\Java_demo\\
            //fos = new FileOutputStream("\\FileOutPutStrame.txt");  //此项目的根盘 E:\\
           // fos.write(bytes,0,bytes.length);
            fos.write(bytes);  //
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            fos.close();
        }
    }

    /**
     * 存储单个字节
     * */
    private static void fileOutputStream1() throws IOException {
        FileOutputStream fos= null;
        try {
            fos = new FileOutputStream("FileOutPutStrame.txt"); //此项目的根目录 E:\\Java_demo\\
            //fos = new FileOutputStream("\\FileOutPutStrame.txt");  //此项目的根盘 E:\\
            fos.write(97);  //因为A的字节编码为 97  所以为A
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            fos.close();
        }
    }

    /**
     * 内容追加
     *  new FileOutputStream("FileOutPutStrame.txt",true);   //true追加    false不追加
     *
     *  测试追加测试追加测试追加测试追加
     *
     * */
    private static void fileOutputStream() throws IOException {
        FileOutputStream fos= null;
        try {
            fos = new FileOutputStream("FileOutPutStrame.txt",true); //此项目的根目录 E:\\Java_demo\\
            //fos = new FileOutputStream("\\FileOutPutStrame.txt");  //此项目的根盘 E:\\
            fos.write("测试追加".getBytes());  //因为A的字节编码为 97  所以为A
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            fos.close();
        }
    }

}

字符缓冲输出流

    /**
     * 现将数据写入到缓冲区
     * 然后讲缓冲区的数据 flush 刷新到硬盘
     * */
    private static void bufferOutPutStream() throws IOException {
        FileOutputStream fos=new FileOutputStream("bufferOutputStream.txt");
        BufferedOutputStream bufferedOutputStream =new BufferedOutputStream(fos);
        fos.write("我是缓冲字节输出流".getBytes());
        //fos.flush(); 可以省略
        fos.close();

    }


copy文件

package IOTest;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * Created by kumamon on 2021/5/27.
 * 将项目根目录的 1.jpg copy 项目根目录的2.jpg
 */
public class FileCopyDemo {
    public static void main(String[] args) {
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
            fis = new FileInputStream("E:\\Java_demo\\1.jpg");
            fos = new FileOutputStream("E:\\Java_demo\\2.jpg");
            int len = 0;
            byte[] bytes = new byte[1024];
            while ((len = fis.read(bytes)) != -1) {  //将1.jpg读出来的字节写入 bytes
                fos.write(bytes);                    //将bytes 写入2.jpg
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                fis.close();
                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

相关文章

  • Java中的IO流

    Java中的IO流分类 输入IO流输入字节流(InputStream)处理流缓冲流(BufferedInputSt...

  • Socket文件传输

    服务器端(字节流): import java.io.BufferedReader;import java.io.B...

  • Java NIO:Buffer

    Java NIO(New IO)是一个可以替代标准Java IO API的IO API,标准IO基于字节流河字符流...

  • Java 中 IO 流分为几种?BIO,NIO,AIO 有什么区

    java 中 IO 流分为几种? 按照流的流向分,可以分为输入流和输出流; 按照操作单元划分,可以划分为字节流和字...

  • java 中的IO(字节流)

    字符流 电脑中的所有的文件都已以字节存储所以所有文件都可以以字符流来读取和存储 字符输入流(硬盘-->内存) Fi...

  • javaIO

    吃透Java IO:字节流、字符流、缓冲流 IO流是Java中的一个重要构成部分,也是我们经常打交道的。 下面几个...

  • java 复制图片

    在学习了java IO 的基本理论之后做如下总结:1、java的IO操作分为字节流和字符流两种方式。字节流可以传输...

  • 从0开始复习java(9)--IO

    Java的io通过java.io包下的类和接口支持。主要有输入、输出流,又分为字节流和字符流。Java的io流使用...

  • Java IO和NIO

    Java IO Java IO面向流,按照流中的最小数据单元可以分为字节流和字符流,顾名思义分别以字节和字符作为数...

  • Java IO流的使用

    下面部分内容是参考Oubo的博客——Java IO流学习总结 Java流操作有关的类或者接口: 字符流和字节流 字...

网友评论

    本文标题:java 中的IO(字节流)

    本文链接:https://www.haomeiwen.com/subject/wpzrsltx.html