黑马程序员_IO输入输出流
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
IO是java基础中最重要的部分之一, 开始认真的对其学习.
从整体来看, IO流是用来处理设备之间的数据传输用的,流按照输入方式分为输入流和输出流,按照数据类型分为字符流和字节流,分别有4个基类,字符流的2个基类是Reader和Writer,字节流的基类分别是InputStream和OutputStream,计算机中的数据都是以字节的形式存在,可处理图片,多媒体,文档等多种形式的文件,字符流主要是为了处理文本文档用的,因此从字节流出发,进行IO的学习.
输入流是InputStream,是一个接口,不能创建实例对象,因此找到他的子类对象对其操作,对文件的操作选择FileIn-putStream,输入流是对文件进行读入操作,即read();初学时易进入误区,认为这是向外读出的操作,与输出流Output-Stream相混淆,用一张小图进行阐述:已有文件从硬盘上读进内存中,这个内存小人用眼睛和手接收数据,进入内存处理后,内存小人又将数据写出去,送到下一个硬盘中.
通过对字节流的输入输出双向操作可拷贝到不同的路径中,有4中方式,但他们的效率不一样,且各有优缺点.
第一种是读入写出都按一个字节一个字节,代码相对简单,但是传输效率最慢,不建议采用.
第二种是自己定义一个字节数组,自定义字节数组的长度,这样在传输时会按我们给定的长度先在硬盘上存储数据,在交给内存,输出时原理也一样,这样就大大的增快了传输效率,如代码:
FileOutputStreamout = new FileOutputStream("kk.mp3"); //输出流,是目的文件
byte [] b = new byte[1024]; //创建一个存1024个字节的数组
int len=0; //用int型len记录字节长度
while((len=in.read(b))!=-1){ //判断未读到最后一个字节,就对其循环遍历
}
in.close(); //关闭输入流资源
out.close(); //关闭输出流资源
}
第三种是创建数组后指定数组长度为avaiable(),它可以指定为当前文件的长度,但如果该文件的所占内存超出,用它就会溢出内存,因此也不建议用这种.
第四种是用方法BufferedInputStream和BufferedOutputStream,这是字节流的缓冲区,里面封装了字节数组的对象,减少了代码量.
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
黑马程序员_IO输入输出流相关推荐
- 黑马程序员_输入输出流(I/O)
<a href="http://www.itheima.com" target="blank">android培训</a>.<a ...
- 黑马程序员_io流详解
------- android培训.java培训.期待与您交流! ---------- 多线程总结: 1,进程和线程的概念. |--进程:正在运行中的程序 |--线程:进程中的一个执行单元,负责进程中 ...
- 黑马程序员_java高级篇网络编程TCP实战Day8(上)
---------------------ASP.Net+Android+IOS开发.Net培训.期待与您交流! ----------- 黑马程序员_java高级篇网络编程TCP实战Day8(上) ( ...
- 黑马程序员入学Java知识——精华总结
黑马程序员入学Java知识--精华总结 J2SE部分,Java高新技术部分,7K面试题部分等黑马入学要求的知识点总结! 一.黑马程序员-java概述与基础知识 6 1.何为编程? 6 2.Java语言 ...
- 黑马程序员C++笔记
C++ 课程链接: 黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难_哔哩哔哩_bilibili 一.C++基础语法 1.变量和常量数据 1.1第一个C++程序 编写一个C++程序总共分 ...
- [学习笔记]黑马程序员-Hadoop入门视频教程
文章目录 参考资料 第一章:大数据导论与Linux基础(p1-p17) 1.1 大数据导论 1.1.1 企业数据分析方向 1.1.2 数据分析基本流程步骤 明确分析的目的和思路 数据收集 数据处理 数 ...
- 黑马程序员_java自学学习笔记(八)----网络编程
黑马程序员_java自学学习笔记(八)----网络编程 android培训. java培训.期待与您交流! 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无 ...
- 哔哩哔哩黑马程序员C++课程个人学习笔记
写在前面:此博文仅作为个人c++学习笔记,或有错误不建议参考!!! 视频链接:黑马程序员c++教程从0到1 目录 一.第一部分c++基础 1.1 c++初识 1.1.1 hello world 1.1 ...
- 黑马程序员Java零基础视频教程_下部(P52-P134)
黑马程序员Java零基础视频教程_下部(P52-P134) 1. 异常 1.1 异常体系介绍 1.2 编译时异常和运行时异常 1.3 异常在代码中的两个作用 1.4 JVM虚拟机默认处理异常的方式 1 ...
- 黑马程序员Java零基础视频教程_下部(P135-P200)
黑马程序员Java零基础视频教程_下部(P135-P200) 1 多线程 1.1 什么是多线程? 1.2 多线程的并发与并行 1.3 多线程的实现方式 1.3.1 继承Thread类的方式进行实现 1 ...
最新文章
- windows 常用工具
- 一条简单的 SQL 执行超过1000ms,纳尼?
- C++设计模式--抽象工厂模式
- 麦格纳软件公司绩效考核信息化管理解决方案
- mac基本操作技巧_6个基本设计技巧
- oracle账号区分大小写吗,实战Oracle 11g用户密码不区分大小写
- 【匈牙利算法】指引(jzoj 2319)
- 金融行业 | 电子银行系统性能优化解决方案
- AcWing323. 战略游戏(树形DP)题解
- CCF201709-3 JSON查询(100分)【文本处理】
- 数据库操作之整合Mybaties和事务讲解 5节课
- “7天”连锁酒店郑南雁
- vscode通过ssh远程连接服务器
- 【Unity3D游戏开发实战】Unity3D实现休闲类游戏《2048》——算法、源代码
- 读《我没偷懒 - 读写记忆困难儿童案例》
- node.js毕业设计鲸落图书商城小程序LW(源码+程序+LW+部署)
- 计算机组成原理(笔记)
- Swift 周报 第十七期
- SpringBoot重启后,第一次请求接口请求慢的解决方案
- c语言游泳是怎么钓鱼的,不会游泳的钓友进来看 自制饵料钓鲤鱼