字节流 字符流- 字符流 比 字节流 效率高?

问题描述

字符流 比 字节流 效率高?
java老师说操作文件的时候,如果文件是文本的就用 字符流,因为 字符流 操作文本效率高。 可是 字符流 也是基于 字节流 实现的呀! 我也做过试验,copy一个文本文件,结果是字节流的速度快.... 而且 字节流 读取速度快慢取决于每次读取的字节数组大小,这样说来 字符流 完全没优势呀!
小弟java新手,问题可能有点浅薄,忘各路大虾百忙中解答下下,谢谢。

解决方案

package io;
import java.io.FileInputStream;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.util.Calendar;
public class io4 {
public static void main(String[] args) throws IOException {
Calendar startend;
start=Calendar.getInstance();
FileInputStream fis = new FileInputStream(""c:a.java"");
char ch;
int j = fis.available();
for (int i = 0; i < j; i++) {
ch = (char) fis.read();
}
fis.close();
end=Calendar.getInstance();
System.out.println(end.getTimeInMillis()-start.getTimeInMillis());
start=Calendar.getInstance();
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(""c:a.java""));
char ch2;
int j2 = bis.available();
for (int i = 0; i < j2; i++) {
ch2 = (char) bis.read();
}
bis.close();
end=Calendar.getInstance();
System.out.println(end.getTimeInMillis()-start.getTimeInMillis());
}
}

用这个测试一下

解决方案二:
一般来说文本文件是字符流较快,字节流适合用于非文本文件

解决方案三:
所有流的地层都是字节实现的,但是对于字符的文本信息,那肯定是字符流,快些,因为加入还是字节读取的话,中间还的用InputSteamReader或者OutputStreamWriter转换

时间: 2024-10-01 10:50:55

字节流 字符流- 字符流 比 字节流 效率高?的相关文章

字节流-JAVA缓冲字符流在实例化传入的必须是字符流吗?

问题描述 JAVA缓冲字符流在实例化传入的必须是字符流吗? 缓冲字符流在实例化传入的必须是字符流吗?可以传入 InputStream或OutputStream吗? 今天看代码遇到了这样的写法,不知道这种写法对不对,求告知原因! OutputStream os=new FileOutputStream("pw.txt",true); PrintWriter pw = new PrintWriter(os,true); 解决方案 首先你得捕获异常,应该这样 OutputStream os

java IO之 File类+字节流 (输入输出 缓冲流 异常处理)

1. File类 File 路径问题: 上下级文件夹之间使用分隔符分开: 在Windows中分隔符为'\' ,在Unix/Linux中分隔符为'/' 跨平台分隔符: 专业的做法是使用File.separatorChar,这个值会根据系统得到的相应的分隔符. 例:new File("c:"+File.separatorChar+"a.txt"); 注意,如果是使用"\" ,则需要进行转义,写为"\\"才可以     绝对路径与相

JAVA之旅(二十七)——字节流的缓冲区,拷贝mp3,自定义字节流缓冲区,读取键盘录入,转换流InputStreamReader,写入转换流,流操作的规律

JAVA之旅(二十七)--字节流的缓冲区,拷贝mp3,自定义字节流缓冲区,读取键盘录入,转换流InputStreamReader,写入转换流,流操作的规律 我们继续来聊聊I/O 一.字节流的缓冲区 这个,和我们的字符流基本上没有什么差别,我们来拷贝mp3,看例子 // 通过字节流的缓冲区拷贝图片 public static void copyMp3() { try { FileInputStream fi = new FileInputStream("audio.mp3"); Buff

Java基础-21总结字符流,IO流编码问题,实用案例必做一遍

你需要的是什么,直接评论留言. 获取更多资源加微信公众号"Java帮帮" (是公众号,不是微信好友哦) 还有"Java帮帮"今日头条号,技术文章与新闻,每日更新,欢迎阅读 学习交流请加Java帮帮交流QQ群553841695 分享是一种美德,分享更快乐! 1:字符流(掌握)  // 字节流读取中文可能出现的小问题(所以用字符流输入输出中文) package cn.itcast_01; import java.io.FileInputStream; import ja

java流字符乱码问题,求助!

问题描述 java流字符乱码问题,求助! 地址https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443,结果为GBK编码,获取手机号码归属地以后,发现获得字符结果中中文乱码,麻烦大神指教,谢谢!以下提出部分代码. HttpClient client = new DefaultHttpClient();//浏览器客户端 HttpGet request = new HttpGet(sb.toString());//ge

浅析Java.IO输入输出流 过滤流 buffer流和data流_java

java.io使用了适配器模式装饰模式等设计模式来解决字符流的套接和输入输出问题. 字节流只能一次处理一个字节,为了更方便的操作数据,便加入了套接流. 问题引入: 缓冲流为什么比普通的文件字节流效率高? 不带缓冲的操作,每读一个字节就要写入一个字节. 由于涉及磁盘的IO操作相比内存的操作要慢很多,所以不带缓冲的流效率很低. 带缓冲的流,可以一次读很多字节,但不向磁盘中写入,只是先放到内存里. 等凑够了缓冲区大小的时候一次性写入磁盘,这种方式可以减少磁盘操作次数,速度就会提高很多! 这就是两者的区

字符集和字符编码(Charset &amp; Encoding)

--每个软件开发人员应该无条件掌握的知识! --Unicode伟大的创想! 相信大家一定碰到过,打开某个网页,却显示一堆像乱码,如"бЇЯАзЪСЯ"."�????????"?还记得HTTP中的Accept-Charset.Accept-Encoding.Accept-Language.Content-Encoding.Content-Language等消息头字段?这些就是接下来我们要探讨的. 目录: 1.基础知识 2.常用字符集和字符编码 2.1. ASCII字符

字符集和字符编码(Charset &amp;amp; Encoding)_其它综合

相信大家一定碰到过,打开某个网页,却显示一堆像乱码,如"бЇЯАзЪСЯ"."�????????"?还记得HTTP中的Accept-Charset.Accept-Encoding.Accept-Language.Content-Encoding.Content-Language等消息头字段?这些就是接下来我们要探讨的. 目录: 1.基础知识 2.常用字符集和字符编码2.1. ASCII字符集&编码2.2. GBXXXX字符集&编码2.3. BIG5字

十分钟搞清字符集和字符编码

十分钟搞清字符集和字符编码 本文将简述字符集,字符编码的概念.以及在遭遇乱码时的一些常用诊断技巧 背景:字符集和编码无疑是IT菜鸟甚至是各种大神的头痛问题.当遇到纷繁复杂的字符集,各种火星文和乱码时,问题的定位往往变得非常困难. 本文就将会从原理方面对字符集和编码做个简单的科普介绍,同时也会介绍一些通用的乱码故障定位的方法以方便读者以后能够更从容的定位相关问题. 在正式介绍之前,先做个小申明:如果你希望非常精确的理解各个名词的解释,那么可以查阅wikipedia.本文是博主通过自己理解消化后并转