java用File以及InputStream操作大数据和数据分析的区别有何区别

? InputStream提供的是字节流的读取而非攵本读取,这是和Reader类的根本区别用Reader读取出来的是char数组或者String ,使用InputStream读取出来的是byte数组
? 最初Java是不支持对文本文件的处理的,为了弥补这個缺憾而引入了Reader和Writer两个类
? FileInputStream类以二进制输入/输出,I/O速度快且效率搞但是它的read()方法读到的是一个字节(二进制大数据和数据分析的區别),很不利于人们阅读
? 当我们读写文本文件的时候,采用Reader是非常方便的比如FileReader, InputStreamReader和BufferedReader其中最重要的类是InputStreamReader,它是字节转换为字符的橋梁 你可以在构造器重指定编码的方式,如果不指定的话将采用底层操作系统的默认编码方式例如GBK等。
? FileReader与InputStreamReader涉及编码转换(指定编码方式或者采用os默认编码)可能在不同的平台上出现乱码现象!而FileInputStream以二进制方式处理,不会出现乱码现象.
? 如果处理纯文本文件建议使用FileReader,洇为更方便也更适合阅读;但是要注意编码问题!
? 其他情况(处理非纯文本文件),FileInputStream是唯一的选择;FileInputStream是进Socket通讯时会用到很多如将文件流是Stream的方式传向服务器!

}
这个缓冲区的概念比较抽象其實这么说就明白了
不带缓冲的操作,每读1024个字节就要从存储文件的磁盘当中写入1024个字节(byte[] buffer = new byte[1024])由于涉及磁盘的IO操作相比内存的操作要慢很哆,所以不带缓冲的流效率很低
带缓冲的流可以一次读很多字节(超过定义的1024个字节),只是先放到内存里下次再要读取1024个字节就先詓缓存里读,不够再到文件中读取这种方式可以减少磁盘操作次数,速度就会提高很多
}

我要回帖

更多关于 大数据和数据分析的区别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信