欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

利用缓存读取文件提高性能

程序员文章站 2022-06-10 22:31:18
...
前段时间写了个程序需要对文件进行读取操作,一开始使用最普通的写法
		FileReader in = new FileReader("E:/a.html");
		BufferedReader br = new BufferedReader(in);
		String string="",str="";
		while((string=br.readLine())!=null){
			str+=string;
		}
		System.out.println(str);

但是当正式开始运行的时候发现用是可以用但效率过于低下(因为每次运行都要读取几十甚至上百个的文件,所以效率问题很明显),所以就上网搜索了一些提高IO流的资料,发现大多数都是说使用缓存,于是就上网搜了一段代码
     * 使用缓存区读写文件  
     * @param from  
     * @param to  
     * @throws IOException  
     */  
    public static void readWriteWithBuffer(String from, String to)   
            throws IOException {   
        InputStream inBuffer = null;   
        OutputStream outBuffer = null;   
        try {   
            inBuffer = new BufferedInputStream(new FileInputStream(from));   
            outBuffer = new BufferedOutputStream(new FileOutputStream(to));   
            while (true) {   
                int data = inBuffer.read();   
                if (data == -1) {   
                    break;   
                }   
                outBuffer.write(data);   
            }   
        } finally {   
            if (inBuffer != null) {   
                inBuffer.close();   
            }   
            if (outBuffer != null) {   
                outBuffer.close();   
            }   
        }   
    }   
  
}

但发现无法直接将字符串存入内存进行其他操作,于是又搜索了一些资料,发现原来只要用byte转一下即可,最终代码如下
		File file = new File( "E:/a.html");
		InputStream input = null;
		input = new FileInputStream(file);
		String str = "";
		byte[] b = new byte[(int)file.length()];
		input.read(b);
		input.close();
		str=new String(b);
		System.out.println(str);