java IO

java Stream(流) File(文件)&IO

  1. Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。
  2. Java中的“流”都位于java.io包中,称为IO(输入/输出)流
  3. IO流有很多种,按照操作数据的不同,可以分为字节流和字符流,按照数据传
输方向的不同又可分为输入流和输出流,程序从输入流中读取数据,向输出流中写入数据。

  • 字节流分别用 java.io.InputStream和java.io.OutStream表示
  • 字符流的输入和输出用java.io.Reader 和java.io.Writer表示

(一)字节流的概念

  • 在计算机中,无论是文本、图片、音频还是视频,所有的文件都是以二进制(字节)形式存在,
  • IO流中针对字节的输入输出提供了一系列的流,统称为字节流

  • 在JDK中,提供了两个抽象类InputStream和OutputStream,它们是字节流的顶级父类,

  • 所有的字节输入流继承自InputStream,所有的字节输出流都继承自OutputStream。
  • 在JDK中,InputStream提供了一系列与读数据相关的方法,具体如下:

    • InputStream子类
  • 在JDK中,OutputStream提供了一系列与写数据相关的方法,具体如下:

    • OutputStream子类

(二)字节流读写文件

  • 针对文件的读写,JDK专门提供了两个类,分别是FileInputStream和FileOutputStream。
  • 其中,FileInputStream是InputStream的子类,它是操作文件的字节输入流,专门用于读取文件中的数据

代码

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

public class IOtest {
    public static void main(String[] args)  {
        String filePath = "src/test.txt";
        try {
            FileInputStream inputStream = new FileInputStream(filePath);
            int b = 0;
            while (true){
                try {
                    b = inputStream.read();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                if (b==-1){
                    break;
                }
                System.out.print((char)b);
            }
            try {
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }catch (FileNotFoundException e){
            e.printStackTrace();
        }
    }
}
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class Outputtest {
    public static void main(String[] args)throws IOException {
        String filePath = "src/OutPut.txt";
        FileOutputStream fileOutputStream = new FileOutputStream(filePath,true);
        String str = "Hellow Word!\n";
        byte[] ch = str.getBytes();
        for (int i = 0; i <ch.length ; i++) {
            fileOutputStream.write(ch[i]);
        }
        fileOutputStream.close();
    }
}
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class IOCopy {
    public static void main(String[] args)throws IOException {
        String inputPath = "src/1.jpg";
        String outputPath = "src/2.jpg";
        FileInputStream fileInputStream = new FileInputStream(inputPath);
        FileOutputStream fileOutputStream = new FileOutputStream(outputPath);
        int b = 0;
//        b = fileInputStream.read();
//        System.out.println(b);
        long sartTime = System.currentTimeMillis();
        while (true){
            b = fileInputStream.read();
            if (b==-1)
                break;
            fileOutputStream.write(b);
        }
        long endTime = System.currentTimeMillis();
        fileInputStream.close();
        fileOutputStream.close();
        System.out.println("所用时间"+(endTime-sartTime));


    }
}

发表评论