Java IO输入输出流 FileWriter 字符流





字节缓冲流
//为什么要使用包装流,使用包装流是为了提高读写操作的性能。
public class Packing_flowDemo {
public static void main(String[] args) throws Exception {
File file = new File("file/packing_flow.txt");
//包装流的写法,缓冲区内存大小。1024*8=8192 (byte)
// BufferedOutputStream packing = new BufferedOutputStream(new FileOutputStream(file, true));
// packing.write("大家好!你好吗?how are your !".getBytes());
// packing.close();
//包装流的读写操作。
BufferedInputStream outPacking = new BufferedInputStream(new FileInputStream(file));
byte[] buffer = new byte[1024];
int len = -1;
while ((len = outPacking.read(buffer)) != -1) {
System.out.println(new String(buffer, 0, len));
}
}
}
public static void main(String[] args) throws IOException {//为了代码看起来美观一些,直接抛出去
File file=new File("moves/许嵩 - 素颜 - 现场版.mp3");
File file1=new File("moves/许嵩 - 素颜.mp3");
//text(file, file1);
//text2(file, file1);
//text3(file, file1);
text4(file, file1);
}
private static void text(File file,File file1) throws IOException {
//节点流的方法,一个一个字节的读和写
long begin=System.currentTimeMillis();
FileInputStream in=new FileInputStream(file);
FileOutputStream out =new FileOutputStream(file1);
int len=-1;
while((len=in.read())!=-1){
out.write(len);
}
in.close();
out.close();
System.out.println(System.currentTimeMillis()-begin);//5547毫秒
}
private static void text2(File file,File file1) throws IOException {
//缓冲流的写法,一个一个字节的读和写
long begin=System.currentTimeMillis();
BufferedInputStream in=new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream out =new BufferedOutputStream(new FileOutputStream(file1));
int len=-1;
while(in.read()!=-1){
out.write(len);
}
in.close();
out.close();
System.out.println(System.currentTimeMillis()-begin);//63毫秒
}
private static void text3(File file,File file1) throws IOException {
//节点流的写法,一次性读取1024个字节
long begin=System.currentTimeMillis();
FileInputStream in=new FileInputStream(file);
FileOutputStream out =new FileOutputStream(file1);
int len=-1;
byte[] buffer=new byte[1024];
while((len=in.read(buffer))!=-1){
out.write(buffer,0,len);
}
in.close();
out.close();
System.out.println(System.currentTimeMillis()-begin);//38毫秒
}
private static void text4(File file,File file1) throws IOException {
//缓冲流的写法,一次性读取1024个字节
long begin=System.currentTimeMillis();
BufferedInputStream in=new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream out =new BufferedOutputStream(new FileOutputStream(file1));
int len=-1;
byte[] buffer=new byte[1024];
while((len=in.read(buffer))!=-1){
out.write(buffer,0,len);
}
in.close();
out.close();
System.out.println(System.currentTimeMillis()-begin);//4毫秒
}
Java IO输入输出流 FileWriter 字符流的更多相关文章
- java.IO输入输出流:过滤流:buffer流和data流
java.io使用了适配器模式装饰模式等设计模式来解决字符流的套接和输入输出问题. 字节流只能一次处理一个字节,为了更方便的操作数据,便加入了套接流. 问题引入:缓冲流为什么比普通的文件字节流效率高? ...
- java IO输入输出流中的各种字节流,字符流类
字节流字节流主要是操作byte类型数据,也byte数组为准,主要操作类就是·字节输出流:OutputStream·字节输入流:InputStream字符流在程序中一个字符等于2个字节,那么java提供 ...
- Java精选笔记_IO流(字符输入输出流、字符文件输入输出流、字符流的缓冲区)
字符流 Reader是字符输入流的基类,用于从某个源设备读取字符 Writer是字符输出流,用于向某个目标设备写入字符 字符流操作文件 字符输入流FileReader,通过此流可以从关联的文件中读取一 ...
- java io 输入输出流
数据流分类: 流序列中的数据既可以是未经加工的原始二进制数据, 也可以是经一定编码处理后符合某种格式规定的特定数据. 因此Java中的流分为两种: 1) 字节流:数据流中最小的数据单元是字节 2) 字 ...
- Java IO(四)——字符流
一.字符流 字节流提供了处理任何类型输入/输出操作的功能(因为对于计算机而言,一切都是0和1,只需把数据以字节形式表示就够了),但它们不可以直接操作Unicode字符,因为一个Unicode字符占用2 ...
- java IO的字节流和字符流及其区别
1. 字节流和字符流的概念 1.1 字节流继承于InputStream OutputStream, 1.2 字符流继承于InputStreamReader OutputStre ...
- Java IO 输入输出流 详解 (一)***
首先看个图: 这是Javaio 比较基本的一些处理流,除此之外我们还会提到一些比较深入的基于io的处理类,比如console类,SteamTokenzier,Externalizable接口,Seri ...
- Java基础(二十七)Java IO(4)字符流(Character Stream)
字符流用于处理字符数据的读取和写入,它以字符为单位. 一.Reader类与Writer类 1.Reader类是所有字符输入流的父类,它定义了操作字符输入流的各种方法. 2.Writer类是所有字符输出 ...
- java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝
接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...
随机推荐
- Windows下查看什么进程占用文件
任务管理器→性能Tab→资源管理器→CPU→关联的句柄后面的检索框中录入文件名(关键文件夹即可). 比如我的是在删除tomcat下面的WEB-INF文件出现问题:就输入WEB-INF:mygod,发现 ...
- linux 系统创建软连接
ln -s /data/var/ /usr/local/smokeping/var 需求:/var/本身在/usr/local/smokeping/var下,想要把/usr/local/smokepi ...
- java排序。。简单的冒泡排序
总结:一种简单的交换顺序,从数左边开始扫描待排序的元素,在扫描过程中依次对相邻元素进行比较,将较大值后移,每经过一轮排序后,值最大的元素将移到末尾, 此时记下该元素的位置,下一轮排序只需比较到此位置即 ...
- python学习(九) 魔法方法、属性和迭代器
9.1 准备工作 python 3.0的所有类都会隐式地成为object的子类. 9.2 构造方法 在python中创建一个构造方法:只要把init方法的名字修改为魔法版本__init__即可. &g ...
- ZedGraph类库之基本教程篇
第一部分:基本教程篇 ZedGraphDemo中一共有9个基本教程的例子.其中大部分都类似,我会讲解其中一些比较典型的例子.把ZedGraph类库的使用逐步展现给大 ...
- ansibel---tag模块
如果你有一个大的剧本,你可以在不运行整个剧本的情况下运行一个特定的部分. 由于这个原因,两个游戏和任务都支持一个“标记:”属性.您只能根据命令行中的标记(标记或- skip- tags)对任务进行筛 ...
- android获取mp4视频文件总时长和视频宽高<转>
android使用 MediaMetadataRetriever 获取视频文件的 总时长 和视频的分辨率. 根据该方式获取视频信息可以看出不仅仅可以获取时长和分辨率,还能获取到其他的一些视频信息,不错 ...
- Spring Cloud Eureka 3 (Eureka client注册服务提供者)
在完成服务注册中心的搭建后我们来尝试下将一个既有的spring boot应用加入eureka的服务治理体系中 新建一个spring boot项目加入eureka client依赖 这里加入的eurek ...
- 缓存数据库redis
什么是Redis? Redis是一个TCP服务器,支持请求/响应协议. 在Redis中,请求通过以下步骤完成: 客户端向服务器发送查询,并从套接字读取,通常以阻塞的方式,用于服务器响应. 服务器处理命 ...
- easylogging++学习记录(二):流式日志
easylogging++日志库流式日志的写入,依赖于el::base::Writer类的析构,以debug日志为例:具体代码如下: #define LOG(LEVEL) CLOG(LEVEL, EL ...