zoukankan      html  css  js  c++  java
  • 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();
                    }
                }
            }
        }
        
    
    }
  • 相关阅读:
    Codeforces Global Round 11 E Xum
    【NFLSPC #2】Polynomial
    【SHOI2015】脑洞治疗仪 题解 (线段树)
    CDQ分治与整体二分 学习笔记
    二维树状数组 学习笔记
    博弈论 学习笔记
    【JSOI2007】文本生成器 题解(AC自动机+动态规划)
    【NOI2018】归程 题解(kruskal重构树+最短路)
    【NOI2017】游戏 题解(2-SAT+缩点)
    【BZOJ4398】福慧双修 题解(建图优化)
  • 原文地址:https://www.cnblogs.com/wxisme/p/4375619.html
Copyright © 2011-2022 走看看