开发者社区> 问答> 正文

java中字节流读写和字符流读写哪个效率更高?

我们java中的io流分为两大类,字节流和字符流。
可是在具体使用的时候怎么视情况进行使用?
怎么使用更加有效率?
有两个例子,帮忙看看解释一下,用哪种比较有效率以及适用情况。
下面是用字符流进行读写
写入:

FileOutputStream out = null;
        BufferedWriter writer = null;
        try {   
            out = openFileOutput("data", Context.MODE_PRIVATE); 
            writer = new BufferedWriter(new OutputStreamWriter(out));
            writer.write(inputText);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (writer != null) {
                    //关闭
                    writer.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

读取

FileInputStream in = null;
        BufferedReader reader = null;
        StringBuilder content = new StringBuilder();
        try {
            in = openFileInput("data");
            reader = new BufferedReader(new InputStreamReader(in));
            String line = "";
            while ((line = reader.readLine()) != null) {
                content.append(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                   //关闭
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

下面使用字节流读写
写入

public void WriteFiles(String content){
         try {
            FileOutputStream fos = openFileOutput("a.txt", MODE_WORLD_READABLE+MODE_WORLD_WRITEABLE);
             fos.write(content.getBytes());
             fos.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
         
    }

读取

public String readFiles(){
        String content = null;
         try {
            FileInputStream fis= openFileInput("a.txt");
            ByteArrayOutputStream baos =  new ByteArrayOutputStream();
            byte [] buffer =  new byte[1024];
            int len = 0;
            while ((len=fis.read(buffer))!=-1) {
                baos.write(buffer, 0, len);
            }
            content = baos.toString();
            fis.close();
            baos.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        return content;
    }

展开
收起
蛮大人123 2016-03-10 14:18:26 5643 0
1 条回答
写回答
取消 提交回答
  • 个人对建模比较关注

    如果单纯数据传输的话用字节流,因为字符流还涉及编码的转换等操作会浪费时间。看下nio是否能提升你的速度?

    2019-07-17 18:57:35
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载