文件IO流

Posted lifusen

tags:

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

//字节流读写含有中文的文本文件会出现问题,我在实践中居然没有检验出该问题,新人小菜,希望大家能指出:

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


public class Wenjian {
    
    public static void main(String[] args) throws IOException, InterruptedException {
//        字节流1个字节复制纯文本 可以加true
//        FileInputStream fis = new FileInputStream("tt.txt");
//        FileOutputStream fos = new FileOutputStream("C:\\Users\\issuser\\Desktop\\ttt.txt",true);
//        int rr = 0;
//        while((rr=fis.read())!=-1){
//            fos.write(rr);
//        }
//        fis.close();
//        fos.close();

//        字节流1个字节复制非纯文本 不能加true 在结尾加字节会导致,文件不断累加
//        FileInputStream fis = new FileInputStream("美女1.jpg");
//        FileOutputStream fos = new FileOutputStream("C:\\Users\\issuser\\Desktop\\meinv.jpg");
//        int rr = 0;
//        while((rr=fis.read())!=-1){
//            fos.write(rr);
//        }
//        fis.close();
//        fos.close();

        //字节流多个个字节复制非纯文本 不能加true 在结尾加字节会导致,文件不断累加
//        FileInputStream fis = new FileInputStream("美女1.jpg");
//        FileOutputStream fos = new FileOutputStream("C:\\Users\\issuser\\Desktop\\meinv1.jpg");
//        int rr = 0;
//        byte[] arr = new byte[1024*8];
//        while((rr=fis.read(arr))!=-1){
//            fos.write(arr,0,rr);
//        }
//        fis.close();
//        fos.close();
        
        //字节流多个个字节复制非纯文本 不能加true 在结尾加字节会导致,文件不断累加   应该有读取中文问题
        FileInputStream fis = new FileInputStream("checked.html");
        FileOutputStream fos = new FileOutputStream("C:\\Users\\issuser\\Desktop\\xx.html");
        int rr = 0;
        byte[] arr = new byte[5];
        while((rr=fis.read(arr))!=-1){
            fos.write(arr,0,rr);
        }
        fis.close();
        fos.close();
        
        //字节流Buff复制非纯文本 不能加true 在结尾加字节会导致,文件不断累加
//        BufferedInputStream bi = new BufferedInputStream(new FileInputStream("美女1.jpg"));
//        BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream("C:\\Users\\issuser\\Desktop\\meinv1.jpg"));
//        int rr = 0;
//        while((rr=bi.read())!=-1){
//            bo.write(rr);
//        }
//        bi.close();
//        bo.close();
    
        //字符流1个字符复制 可以加true
//        FileReader fr = new FileReader("tt.txt");
//        FileWriter fw = new FileWriter("C:\\Users\\issuser\\Desktop\\ttt.txt",true);
//        int rr=0;
//        while((rr=fr.read())!=-1){
//            fw.write(rr);
//        }
//        fr.close();
//        fw.close();
    
        //字符流多个字符复制 可以加true
//        FileReader fr = new FileReader("tt.txt");
//        FileWriter fw = new FileWriter("C:\\Users\\issuser\\Desktop\\ttt.txt",true);
//        int rr=0;
//        char[] arr = new char[1024];
//        while((rr=fr.read(arr))!=-1){
//            fw.write(arr,0,rr);
//        }
//        fr.close();
//        fw.close();
    
        //字符流Buffer复制 可以加true
//        BufferedReader br = new BufferedReader(new FileReader("tt.txt"));
//        BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\Users\\issuser\\Desktop\\ttt.txt"));
//        
//        int rr = 0;
//        while((rr=br.read())!=-1){
//            bw.write(rr);
//        }
//        br.close();
//        bw.close();
                
        // 创建输入流
//                FileReader fr = new FileReader("tt.txt");
//                FileWriter fw = new FileWriter("C:\\Users\\issuser\\Desktop\\ttt.txt");
//                // 带缓冲的字符流
//                BufferedReader br = new BufferedReader(fr);
//                BufferedWriter bw = new BufferedWriter(fw);
//
//                String c;
//                while ((c = br.readLine()) != null) {  // 没有换行
//                    bw.write(c);
//                    // 添加新行
//                    bw.newLine();       // 跨平台
//                    // bw.write("\r\n");    // 只在Windows下有用
//                }
//
//                // 关闭流
//                br.close();
//                bw.close();
//            }
        
//        // 创建LineNumberReader对象
//            LineNumberReader lnr = new LineNumberReader(new FileReader("tt.txt"));
//            
//            // 设置当前行号
//            lnr.setLineNumber(100);
//            
//            String line;
//            while( (line = lnr.readLine()) != null ){
//                // 获取当前行号
//                System.out.println(lnr.getLineNumber() + ":" +   line);
//            }
//            
//            // 关闭流
//            lnr.close();
        InputStreamReader isr = new InputStreamReader(new FileInputStream("utf-8.txt"), "UTF-8");
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("gbk.txt"), "GBK");
        
    }
}

 

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

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

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

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

在 .net 中处理 pcm wav 流

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

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