文件IO流

Posted ylblikestudyjava

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件IO流相关的知识,希望对你有一定的参考价值。

字节流,字符流:--------->非文本文件都用字节流8bit传输,    其余(文本文件)使用字符流16bit.

输入流,输出流:--------->数据输入程序输入流,程序输出数据输出流

四个主要抽象实现类:

   抽象基类              节点流(文件流)         缓冲流

  1. Inputstream:        FileInputstream:        BufferInputstream        字节流
  2. OutputStream      FileOutputStream     BufferOutputStream     字节流
  3. Reader                 FileReader               BufferReader                字符流
  4. Writer                   FileWriter                  BufferWriter                  字符流

操作步骤:

  1. 创建流及对应的文件
  2. 具体的读取,写出过程
  3. 关闭资源,流
  4. 涉及到资源关闭都用try-catch

特别注意:

  1. 对于输入流来讲,读取的文件一定要存在,否则,报FileNotFoundException错
  2. 对于输出流来讲,写出的文件如果不存在,在输出的过程,会自动创建此文件,()前提是文件存在的目录要存在)
    1. 写出的文件若存在,则写出的文件将覆盖原有文件存储的内容

字符流实操

 

package iotest;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import org.junit.Test;

public class FileTest {

    public void testFileReader()  {
        //创建流及对应的文件
        File f1=null;
        FileReader fr=null;
        try {
            f1 = new File("E:\testFile\hello.txt");
            fr = new FileReader(f1);
            //具体的读取操作
            System.out.println(fr.read());
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //关闭流
            try {
                fr.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
    }    
    @Test
    public void testFileWriter() {
        //创建流及文件
        File f2=new File("target1.txt");
        FileWriter fw=null;
        try {
            fw = new FileWriter(f2);
            //写入具体过程
            fw.write("对不起,我是警察");
            fw.write("你是警察,谁又知道呢!");
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                fw.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
    
         

    }
}

 

//使用(字符流)FileReader和FileWriter完成文本文件复制操作

    //复制
    @Test
    public void testCopy() {
        //创建流和文件
        
        FileReader fr=null;
        FileWriter fw=null;
        try {
            File ff1=new File("target.txt");
            File ff2=new File("target1.txt"); 
             fr=new FileReader(ff1);
             fw=new FileWriter(ff2);
            
            //具体的读入和写出操作
            char [] cbuf=new char[5];
            int len;
            while ((len=fr.read(cbuf)) !=-1) {
                //写出操作
                fw.write(cbuf, 0, len);
            }
        }  catch (IOException e) {
            e.printStackTrace();
        }finally {
            //关闭资源
            try {fw.close();
                
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                
                    fr.close();
                
            
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }

//使用(字节流)FileInputStream和FileOutStream完成文本文件复制操作

 

package iotest;

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

import org.junit.Test;

public class FileOutTest {
    //复制
        @Test
        public void testCopy() {
            
            FileInputStream fir=null;
            FileOutputStream fow=null; 
            try {
                //创建流和文件
                
                File ff1=new File("C:\Users\花花\Pictures\Camera Roll\小帅哥.jpeg");
                File ff2=new File("C:\Users\花花\Pictures\Camera Roll\tim1.jpg"); 
                 fir=new FileInputStream(ff1);
                 fow=new FileOutputStream(ff2);
                
                //具体的读入和写出操作
                byte[] buffer=new byte[1024];
                int len;
                while ((len=fir.read(buffer)) !=-1) {
                    //写出操作
                    fow.write(buffer, 0, len);
                }
            }  catch (IOException e) {
                e.printStackTrace();
            }finally {
                //关闭资源
                try {
                    fow.close();
                    
                } catch (IOException e) {
                    e.printStackTrace();
                }
                try {
                    
                        fir.close();

                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

        }
}

 

以上是关于文件IO流的主要内容,如果未能解决你的问题,请参考以下文章

利用IO(文件字符流)打印代码本身

JAVA IO流相关代码(打印流 和 文件拼接)

JAVA IO流相关代码(打印流 和 文件拼接)

在 .net 中处理 pcm wav 流

JAVA字节缓冲流代码实现所有类型文件的复制

JAVA IO流相关代码(FileWriter,FileReader)