• Java IO总结之缓冲读入文件


    package com.io;
    
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.LinkedList;
    
    /**
     * 缓冲读入文件
     * @author Administrator
     *
     */
    public class BufferedInputFile {
    
        public static String read(String filename) throws IOException{
                //reading input by lines:
            BufferedReader in = new BufferedReader(new FileReader(filename));
            String s;
            StringBuilder sb= new StringBuilder();
            
            while((s=in.readLine())!=null){
                sb.append(s+"
    ");
            }
            in.close();
            return sb.toString();
        }
        
        //test1,打开一个文本文件,每次读取一行内容,将每行作为一个string读入,并将该string对象存入linklist中,逆序打印linklist
        public static void printLinkList(String fileName) throws IOException{
            BufferedReader in = new BufferedReader(new FileReader("C:/Users/Administrator/Desktop/exec.txt"));
            String string;
            LinkedList<String> list = new LinkedList<String>();
            while((string=in.readLine())!=null){
                list.add(string);
            }
            /*for(int i=list.size();i>=0;i--){
                System.out.println(list.get(i));
            }*/
            java.util.ListIterator<String> item = list.listIterator(list.size());
            
            while(item.hasPrevious()){
                System.out.println(item.previous());
            }
            
            while(item.hasNext()){
                System.out.println(item.next());
            }
            
            /**
             * 结果:
             *  4-->4-->4:4:4:ghdgml11
                3-->3-->3:3:3:flypiger
                2-->2-->2:2:2:ghdgml11
                1-->1-->1:1:1:flypiger
             */
            
        }
        
        public static void main(String[] args) throws IOException {
            //System.out.println(read("C:/Users/Administrator/Desktop/exec.txt"));
            printLinkList("C:/Users/Administrator/Desktop/exec.txt");
        }
    }

    不要问为什么,代码诠释一切

    package com.io;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.io.StringReader;
    /**
     * 基本的io
     * @author Administrator
     *
     */
    public class BasicFileOutput {
    
        public static String file = "C:/Users/Administrator/Desktop/exec.txt";
        public static String file1 = "C:/Users/Administrator/Desktop/exe.txt";
        public static void main(String[] args) throws IOException {
            //使用BufferedReader缓冲读入流,使用StringReader包装一个BufferedInputFile.read方法读取的字符串文件流
            System.out.println(BufferedInputFile.read(file));
            BufferedReader in = new BufferedReader(new StringReader(BufferedInputFile.read(file)));
            //FileWriter可以写数据的对象,用BufferedWriter缓冲流包装提升性能,再用PrintWriter包装提升格式
            PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file1)));
            int lineCount = 1;
            String string;
            while((string=in.readLine())!=null){
                out.println(lineCount++ +": "+string);
            }
            out.flush();
            out.close();
            in.close();
            System.out.println(BufferedInputFile.read(file1));
        }
    }
    package com.io;
    
    import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    
    /**
     * 读取二进制文件
     * @author Administrator
     *
     */
    public class BinaryFile {
    
        public static byte[] read(File file) throws IOException{
            BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(file));
            byte[] data = new byte[inputStream.available()];
            
            inputStream.read(data);
            inputStream.close();
            
            return data;
            
        }
        public static byte[] read(String file) throws IOException{
            return read(new File(file).getAbsoluteFile());
        }
    }
    package com.io;
    
    import java.io.ByteArrayInputStream;
    import java.io.DataInputStream;
    import java.io.IOException;
    /**
     * 格式化的内存输出
     * @author Administrator
     *
     */
    public class FormattedMemoryInput {
    
        public static void main(String[] args) throws IOException {
            DataInputStream in= new DataInputStream(new ByteArrayInputStream(BufferedInputFile.read("C:/Users/Administrator/Desktop/exec.txt").getBytes()));
            //available用来查询还有多少可供存取的字符
            while(in.available()!=0){
                System.out.println(in.readByte());
            }
        }
    }
    package com.io;
    
    import java.io.BufferedOutputStream;
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.zip.GZIPInputStream;
    import java.util.zip.GZIPOutputStream;
    
    /**
     * 用GZIP进行压缩,有空总结常用流的包装
     * @author Administrator
     *
     */
    public class GZIPcompress {
        /**压缩/解压缩 常用流,可根据实例替换
         * ZipOutputStream 
         * ZipInputStream
         * GZipOutputStream 
         * GZipInputStream
         * @param args
         * @throws IOException
         */
        
        public static void main(String[] args) throws IOException {
            if(args.length==0){
                System.out.println(
                "Usage: 
    GZIPcompress file
    "+
                "	Users GZIP compression to compress "+
                "the file to test.gz"
                );
            BufferedReader in = new BufferedReader(new FileReader("C:/Users/Administrator/Desktop/exec.txt"));
                                                                                                                                        //后缀名可以是.gz .gzip.zip
            BufferedOutputStream out= new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream("C:/Users/Administrator/Desktop/test.gz")));
            System.out.println("Writing file*********************************");
            
            int c;
            while((c=in.read())!=-1){
                out.write(c);
            }
            out.close();
            in.close();
            System.out.println("reading file*********************************");
            
            BufferedReader in2 = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream("C:/Users/Administrator/Desktop/test.gz"))));
            String string;
            while((string=in2.readLine())!=null){
                System.out.println(string);
            }
            }
        }
    }
    package com.io;
    
    import java.io.IOException;
    import java.io.StringReader;
    
    /**
     * 从内存中读取,没什么好说的
     * @author Administrator
     *
     */
    public class MemoryInput {
    
        public static void main(String[] args) throws IOException {
            StringReader in = new StringReader(BufferedInputFile.read("C:/Users/Administrator/Desktop/exec.txt"));
            //SringReader读取的int类型的,所以要转换成char打印
            int c;
            while((c=in.read())!=-1){
                System.out.println((char)c);
            }
        }
    }
  • 相关阅读:
    在MAC系统的eclipse里打开android sdk manager
    在MAC上搭建eclipse+android开发环境以及eclipse的svn插件的安装
    C语言入门
    变量和数据类型
    兼容 FF&IE 的替换鼠标选择文字方法(转载)
    JavaScript 中在光标处插入添加文本标签节点 详细方法
    jquery获取鼠标位置
    转:javascript Range对象跨浏览器常用操作
    日省三思
    jQuery强大的jQuery选择器 (详解)[转]
  • 原文地址:https://www.cnblogs.com/tingbogiu/p/5801003.html
Copyright © 2020-2023  润新知