java读写文件io流

207 阅读2分钟

• I/O 即输入Input/ 输出Output的缩写,其实就是计算机调度把各个存储中(包括内存和外部存储)的数据写入写出的过程。

• java中用“流(stream)”来抽象表示这么一个写入写出的功能,封装成一个“类”,都放在java.io包里面。

IO流的分类

1、按照流的方向(输出输入都是站在程序所在内存的角度划分的)

• 输入流:只能从中读取数据【主要由InputStream和Reader作为基类】

• 输出流:只能向其写入数据【主要由outputStream和Writer作为基类】

2、按照流的操作颗粒度划分

• 字节流:以字节为单元,可操作任何数据【主要由InputStream和outPutStream作为基类】

• 字符流:以字符为单元,只能操作纯字符数据,比较方便【主要由Reader和Writer作为基类】

3、按照流的角色划分

• 节点流:可以从/向一个特定的IO设备(如磁盘,网络)读/写数据的流,也叫【低级流,主要由】

• 处理流:用于对一个已存在的流进行连接和封装,通过封装后的流来实现数据的读/写功能,也叫【高级流】

来2个demo~

读取File内容到另个File

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class FileIO {

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

            File file = new File("R:\\haha2.txt");//读取文件haha2.txt
            File file2 = new File("R:\\haha.txt");//读取文件haha.txt
            BufferedReader br = new BufferedReader(new InputStreamReader(
                        new FileInputStream(file2)));//用BufferedReader读取文件流
            String line;
            FileOutputStream fs = null;
            while ((line = br.readLine()) != null) {//一次 读取 一行内容
                  if (file.exists()) {
                        fs = new FileOutputStream(file,true);//=====加上 true=====
                        fs.write(line.getBytes());
                  } else {
                        file.createNewFile();//创建 文件 txt
                  }
            }

            fs.flush();
            fs.close();
            br.close();

      }

}
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

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

            File file = new File("R:\\haha.txt");
            File file2 = new File("R:\\haha2.txt");
            StringBuilder sb = new StringBuilder();//声明 StringBuilder 用来存放读取的内容
            InputStream is = null;
            FileOutputStream fo = null;
            is = new FileInputStream(file);//把文件读到输入流
            int len = 0;
            byte[] buf = new byte[1024];
            while((len=is.read(buf))>0){
                  fo = new FileOutputStream(file2);
                  sb.append(new String(buf,0,len));
                  fo.write(sb.toString().getBytes());//写到文件
                 
            }
            is.close();
            fo.close();
     

      }

}