JavaIO简单代码实例

        最近又复习了下JavaIO写了些实例代码都很简单但是能体现大部分方法的用法。

IO流实现文件的拷贝   几种不同的方法:

package com.wxisme.TestIO;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * 字节流拷贝文本文件
 * @author wxisme
 *
 */

public class StreamOne {

    public static void main(String[] args) {
        String path = "E:" + File.separator + "test.txt";
        File file = new File(path);
        try {
            file.createNewFile();
        } catch (IOException e) {
            System.out.println("创建文件失败");
            e.printStackTrace();
        }
        InputStream is = null;
        try {
            is = new FileInputStream(file);
        } catch (FileNotFoundException e1) {
            e1.printStackTrace();
        }
        String fileName = "E:" + File.separator + "Bullet.java";
        OutputStream os = null;
        try {
            os = new FileOutputStream(fileName,true);
        } catch (FileNotFoundException e1) {
            e1.printStackTrace();
        }
        byte[] b = new byte[10];
        int len = 0;
        try {
            while((len = is.read(b)) != -1) {
                os.write(b, 0, len);
            }
            os.flush();//强制刷出缓冲区
        } catch (IOException e) {
            
            e.printStackTrace();
        }finally {
            try {
                os.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
        System.exit(0);
        
    }

}
package com.wxisme.TestIO;

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


/**
 * 字节流拷贝文件
 * @author wxisme
 *
 */

public class StreamTwo {

    public static void main(String[] args) {
        String path = "E:" + File.separator + "test.txt";
        String name = "E:" + File.separator + "Bullet.java";
        Reader r = null;
        try {
            r = new FileReader(name);
        } catch (FileNotFoundException e) {
            System.out.println("创建字符输入流失败");
            e.printStackTrace();
        }
        Writer w = null;
        try {
            w = new FileWriter(path);
        } catch (IOException e) {
            System.out.println("创建字符输出流失败");
            e.printStackTrace();
        }
        char[] cbuf = new char[10];
        int len = 0;
        try {
            while((len = r.read(cbuf)) != -1) {
                //w.write(cbuf);
                w.write(cbuf, 0, len);
            }
            w.flush();//强制刷出
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                w.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                r.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        

    }

}
package com.wxisme.TestIO;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.Scanner;

/**
 * 重定向输入输出 实现文件的拷贝
 * @author wxisme
 *
 */

public class Reset {

    public static void main(String[] args) throws FileNotFoundException {
        String src = "E:" + File.separator + "Bullet.java";
        String path = "E:" + File.separator + "test.txt";
        FileInputStream fis = new FileInputStream(src);
        System.setIn(fis);
        
        PrintStream ps = new PrintStream(new FileOutputStream(path));
        System.setOut(ps);
        
        Scanner scan = new Scanner(System.in);
        scan.useDelimiter("
");//以换行符为分隔符
        while(scan.hasNext()) {
            System.out.println(scan.next());
        }
    }

}

处理流PrintStrream PrintWriter

package com.wxisme.TestIO;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;


/**
 * 使用处理流printStream  printWriter
 * @author wxisme
 *
 */

public class StreamFour {

    public static void main(String[] args) throws IOException {
        String path = "E:" + File.separator + "test.txt";
        PrintStream ps = new PrintStream(new FileOutputStream(path,true));
        ps.print("PrintStream");
        PrintWriter pw = new PrintWriter(new FileWriter(path));
        pw.print("PrintWriter");
        pw.close();
        ps.close();
    }

}

读取单个字符

package com.wxisme.TestIO;

import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.util.Scanner;


/**
 * 读取单个字符
 * @author wxisme
 *
 */

public class ReaderOne {

    public static void main(String[] args) throws IOException {
        Scanner scan = new Scanner(System.in);
        String str = scan.next();
        Reader r = new StringReader(str);
        char[] cbuf = new char[10];
        while(r.read(cbuf,0,1) != -1) {
            char c = cbuf[0];
            System.out.println(c);
        }
        r.close();

    }

}

转换流

package com.wxisme.TestIO;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

/**
 * 使用转换流
 * @author wxisme
 *
 */

public class StreamThree {

    public static void main(String[] args) throws IOException {
        
        /*
         * 输入流底层使用字节流,然后使用转换流把字节流转换成字符流,并且指定解码字符集。
         * 然后把字符流包装成缓冲流,按行读取文件。
         * 乱码问题的两个主要原因:
         *    1. 解码字符集与编码字符集不统一
         *    2. 读取字节缺少,长度丢失。
         */
        String path = "E:" + File.separator + "Bullet.java";
        BufferedReader br = new BufferedReader(
                new InputStreamReader(
                        new FileInputStream(
                                new File(path)),"utf-8"));
        String str;
        while((str = br.readLine()) != null) {
            System.out.println(str);
        }
        br.close();

    }

}

关闭文件的工具方法的两种写法:

package com.wxisme.TestIO;

import java.io.Closeable;
import java.io.IOException;

/**
 * 关闭文件资源的工具类  有两种实现方法   可以实现一次关闭多个文件,先打开的文件后关闭
 * @author wxisme
 *
 */

public class CloseAll {
    
    /**
     * 使用多态    可变参数   可以有多个形参以数组的形式   可变形参必须在所有参数的最后
     * @param io
     */
    public static void closeAll1(Closeable ... io) {
        for(Closeable temp : io) {
            if(temp != null) {
                try {
                    temp.close();
                } catch (IOException e) {
                    System.out.println("文件关闭失败");
                    e.printStackTrace();
                }
            }
        }
    }
    
    /**
     * 泛型方法   使用泛型方法和可变参数
     * @param io
     */
    
    public static <T extends Closeable> void closeAll2(Closeable ... io) {
        for(Closeable temp : io) {
            if(temp != null) {
                try {
                    temp.close();
                } catch (IOException e) {
                    System.out.println("文件关闭失败");
                    e.printStackTrace();
                }
            }
        }
    }
    

}
原文地址:https://www.cnblogs.com/wxisme/p/4375619.html