IO流-字节流File读写操作

package com.yyq;
import java.io.*;
import java.util.concurrent.SynchronousQueue;
/*
 * 字符流: 
 *         FileReader
 *      FileWriter        主要学习了这四个
 *      BufferedReader
 *      BufferedWriter
 *      LineNumberReader
 * 字节流
 *         需求: 想要操作图片数据。这是就要用到字节流
 *         所以要操作文件对象
 *             InputStream OutpuStream(写)
 */
public class FileDemo {
    public static void main(String[] args) throws Exception {
        readFile_3();
    }
    public static void readFile_1() throws IOException{
        FileInputStream fis = new FileInputStream("1.jpg");
        int ch = 0;
        while((ch=fis.read())!=-1){
            System.out.println((char)ch);
        }
    }
    public static void readFile_2() throws IOException{
        FileInputStream fis = new FileInputStream("1.jpg");
        byte[] buf = new byte[1024];
        int num = 0; 
        while((fis.read(buf))!=-1){
            System.out.println(buf);
        }
    }
    // 第三种方式要慎用,这种方式,可能内存异常
    public static void readFile_3() throws IOException{
        FileInputStream fis = new FileInputStream("1.txt");
        
        // 定义一个刚刚好的缓冲区,不需要在循环了
        // 字节流可以操作很多多媒体文件,虚拟机默认是64M
        
        byte[] buf = new byte[fis.available()];
        fis.read(buf);
    //    System.out.println(new String(buf));
    }
    public static void writeFile() throws Exception{
        FileOutputStream fos = new FileOutputStream("fos.txt");
        // 将字符串转化成字节数组
        fos.write("aaa".getBytes());
        // 没刷新,没关闭,字符流走的是字节,把字节临时存储,之后去查表
        // 字符流底层也是使用的字节流的缓冲区,所以字符流需要刷新
        // 字节流是不需要刷新的。缓冲区之后才涉及到刷新操作
        //fos.flush();
        fos.close();
    }
}
原文地址:https://www.cnblogs.com/yangyongqian/p/5153181.html