数据的读写,按照数据类型可以分为两种:字符流和字节流(二者区别?)。所以数据读取方式按照数据类型也可以分为两类:字节流的读取和字符流的读取。

一、字节流读取操作:
|
|-----1、FileInputStrem和FileInputStream字节流逐字节读写(速度最慢)
 
|
|
|-----2、FileInputStrem和FileInputStream构造一个缓冲数组进行读写(速度提升)
|
|-----3、利用字节缓冲区流BufferedInputStream和BufferedOutputStream来直接逐字节读写(速度较快)
|
|
|------4、利用字节缓冲区流BufferedInputStream和BufferedOutputStream通过构造一个缓冲数组进行读写(速度最快)
|
|
|-----5、利用字符流InputStreamWriter和 OutputStreamWriter直接按字节读取
拷贝一个的视频文件,
但是呢,这样的结果是拷贝之后的视频,总大小减小了,原因是直接用的是字符流拷贝导致的,所以对于视频、音乐这些多媒体文件来说,要用字节流进行拷贝。
|
|
|-----6、字符流InputStreamWriter和 OutputStreamWriter直接用缓冲区数组读写
同样拷贝上述视频文件,
|
|
|-----7、字符缓冲流BufferedWriter和BufferedReader直接逐字节读写
拷贝上述视频文件,
|
|
|-----8、字符缓冲流BufferedWriter和BufferedReader按照数组大小逐块读写
拷贝上述视频文件,
|
|
|-----9、字符缓冲流BufferedWriter和BufferedReader按逐行读写(应用于文本读写)
总结:

复制文本文件有几种方式?

9种

复制图片文件有几种方式?

4种

他们各自的优缺点是什么?

字符流按字符处理数据,速度较之于同原理的字节流快,但是使用范围较小,仅限文本文件;

    字节流处理范围广,文本,音频,视频都可以处理。

Java中9种IO的读取方式的更多相关文章

  1. java中几种获取项目路径方式

    转自http://caodaoxi.iteye.com/blog/1234805     在jsp和class文件中调用的相对路径不同. 在jsp里,根目录是WebRoot 在class文件中,根目录 ...

  2. Java中五种遍历HashMap的方式

    import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class Java8Templat ...

  3. Java中几种常见的排序方式

    冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字 ...

  4. Java中两种实现多线程方式的对比分析

    本文转载自:http://www.linuxidc.com/Linux/2013-12/93690.htm#0-tsina-1-14812-397232819ff9a47a7b7e80a40613cf ...

  5. java中四种引用类型

    java中四种引用类型  今天看代码,里面有一个类java.lang.ref.SoftReference把小弟弄神了,试想一下,接触java已经有3年了哇,连lang包下面的类都不了解,怎么混.后来在 ...

  6. Java基础-Java中23种设计模式之常用的设计模式

    Java基础-Java中23种设计模式之常用的设计模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.设计模式分类 设计模式是针对特定场景给出的专家级的解决方案.总的来说设 ...

  7. Java中四种引用:强、软、弱、虚引用

    这篇文章非常棒:http://alinazh.blog.51cto.com/5459270/1276173 Java中四种引用:强.软.弱.虚引用 1.1.强引用当我们使用new 这个关键字创建对象时 ...

  8. JAVA 中两种判断输入的是否是数字的方法__正则化_

    JAVA 中两种判断输入的是否是数字的方法 package t0806; import java.io.*; import java.util.regex.*; public class zhengz ...

  9. Spring中三种配置Bean的方式

    Spring中三种配置Bean的方式分别是: 基于XML的配置方式 基于注解的配置方式 基于Java类的配置方式 一.基于XML的配置 这个很简单,所以如何使用就略掉. 二.基于注解的配置 Sprin ...

随机推荐

  1. connect mysql from another host

    vim /etc/mysql/my.cnf bind-address = 0.0.0.0 /etc/init.d/mysql restart mysql -uroot -p1234 # grant a ...

  2. 【转载】Shell判断字符串包含关系的几种方法

    http://www.cnblogs.com/ginsonwang/p/5525340.html 下面是直接copy的内容: (本来是不打算copy的,但是每次用到或看的时候都要跳转,感觉挺麻烦的.就 ...

  3. USB_HID读写上位机VC++

    在工程属性-->链接器-->添加以下库 open 打开,close 关闭,打开后将获得reader 与writer 的handle,分别进行读写即可 #pragma once #ifdef ...

  4. ios app内嵌入http服务器

    1.采用CocoaHTTPServer https://github.com/robbiehanson/CocoaHTTPServer 2.采用MongooseDaemon https://githu ...

  5. 如何解决System.Web.HttpRequestValidationException的异常

    在.net framework 4.0版本以下, 只需要在web.config中进行如下配置: <configuration>    <system.web>        & ...

  6. IE不能上网,但是其他浏览器可以

    打开IE_工具_internet选项_连接_局域网设置_(勾选)自动检测配置其它的勾去掉,确定.

  7. C# 操作excel单元格居中

    C# 操作excel //导出Excel        private void ExportExcel(string fileName, System.Data.DataTable myDGV, s ...

  8. R语言自动化

    plyr dplyr reshape2(数据整理) boxplot.stats(异常值检测) ggplot2(可视化) knitr(生成报告)

  9. Python 实现Windows开机运行某软件

    开机运行:随系统启动的应用程序,当系统启动之后会自动加载的应用 在注册表中添加启动项便可实现开机启动. 代码如下: # -*- coding:utf-8 -*- import win32api imp ...

  10. C++ Tips and Tricks

    整理了下在C++工程代码中遇到的技巧与建议. 0x00 巧用宏定义. 经常看见程序员用 enum 值,打印调试信息的时候又想打印数字对应的字符意思.见过有人写这样的代码 if(today == MON ...