java字节流转字符流的步骤_字节流-java入门基础笔记-51CTO博客

[14]字节流

一.字节流

1.什么是字节流是IO流中的一种, 可以用来读写字节数据.

2.字节流和字符流的区别计算机中存储任何数据都是以字节的形式, 所以字节流可以读写任意类型的数据.

在读写的数据是字符的时候, 用字符流更方便.

3.什么时候用字节流, 什么时候用字符流当从一个文本文件中读取数据, 在程序中当作字符使用时, 或者写出一段字符数据到文件中时, 使用字符流比较方便.

字符流读取数据就是字符, 字符流可以直接写出字符

如果只是读写数据, 不转为字符, 那么就都可以使用字节流.

4.read()方法为什么返回intReader.read() 读取一个字符, 返回int

InputStream.read() 读取一个字节, 返回int

为什么不是返回char和byte呢?

Reader.read() 如果返回char, 那么无法表示流末尾, 因为所有的char都有可能在流中出现.

在read方法内部, 将读取到的char装入int, 这时正常数据不受影响, 强转回char之后直接使用, 也可以返回-1代表流末尾了.

InputStream.read() 如果返回byte, 也是无法表示流末尾的, 因为从-128到127中所有值都有可能在流中出现.

在read方法内部, 是将读取到的字节&255, 正数没有任何变化, 负数转为了正数, 这时就可以用-1表示文件末尾了

在真正使用数据时, 只要将转换后的数强转回byte即可

5.使用字节流拷贝文件使用FileInputStream和FileOutputStream, 逐个字节拷贝. 效率很低, 不推荐.

* 使用FileInputStream和FileOutputStream, 定义数组作为缓冲区, 一次读取一个数组, 一次写出一个数组, 提高效率.

* 使用BufferedInputStream和BufferedOutputStream, 逐个字节拷贝, 但其内部使用了缓冲机制, 速度较快.

二.转换流

* 1.InputStreamReader当获取了一个字节输入流, 希望从中读取字符数据时, 可以把字节输入流转为字符输入流InputStreamReader

当读取非平台默认编码的字符文件时, FileReader做不到, 只能使用InputStreamReader.

* 2.OutputStreamWriter当获取了一个字节输出流, 希望向外写出字符数据时, 可以把字节输出流转为字符输出流OutputStreamWriter

当写出非平台默认编码的字符文件时, FileWriter做不到, 只能使用OutputStreamWriter

三.标准输入输出流

1.System.in标准输入流, InputStream, 可以从键盘输入读取字节.

可以使用System.setIn(InputStream)改变标准输入流的数据源.

2.System.out标准输出流, PrintStream, 可以向屏幕输出数据.

可以使用System.setOut(PrintStream)改变标准输出流的数据目的地.

四.练习1.对文件进行加密.

2.读写UTF-8文件.

3.从键盘输入读取学生考试成绩, 对其进行排序, 将结果输出到stu.txt文件中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java c s是什么_Java在C/S

随着Java语言的日益流行,特别是Java与InternetWeb的密切结合,使它在全球取得了巨大的成功。Java语言以其独立于平台、面向对象、分布式、多线索及完善的安全机制等特色,成为现代信息系统建设中的良好的开发平台和运行环境。一、Java网络应用模…

java质数判断程序_java判断一个数是否为素数/质数

质数(prime number)又称素数,定义为一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数。第一个思路假如我们需要判断数字是33,因为所有的数都可以被1整除&a…

selenium java po模式_selenium + java po模式

po模式大概介绍,大家也可以自己百度看看Page Object模式主要是将每个页面设计为一个类class,这个类包含页面中需要测试的元素(按钮、输入框、URL、标题等)和实际操作方法,这样在写测试用例时可以通过调用页面类的方法和属性来获取页面元素和操…

条件队列java_Java并发系列(4)AbstractQueuedSynchronizer源码分析之条件队列

AbstractQueuedSynchronizer内部维护了一个同步状态和两个排队区,这两个排队区分别是同步队列和条件队列。我们还是拿公共厕所做比喻,同步队列是主要的排队区,如果公共厕所没开放,所有想要进入厕所的人都得在这里排队。而条件队列…

java调用打印机打印需要进行什么操作_Java调用打印机程序有什么特点?

import java。awt。*;import java。awt。event。*;import java。awt。font。*;import java。awt。geom。*;import java。awt。print。*;import java。util。*;import javax。print。*;import javax。print。attribute。*;import javax。swing。*;/**This program demonstrates …

java基础语法实例教程_Java 基础语法

一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作面向对象中的一些概念下表列出了 面向对象 编程中的一些概念名词说明对象对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有…

python3软件怎么使用_python3怎么使用pip

pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。目前如果你在 python.org 下载最新版本的安装包,则是已经自带了该工具。Python 2.7.9 或 Python 3.4 以上版本都自带 pip 工具。pip 官网:https://pypi.o…

svn php改客户端密码_记录VisualSVNServer配置在线密码修改功能

VisualSVN Server使用的是64位版查看对应的apache版本号是 2.2.32.这个版本需要使用php5.5以下的,且需要使用64位的php。下载php 5.4 的64位版本。配置Visual SVN Server支持php1. 将下载的php解压缩到VisualSVNServer的目录中C:Program FilesVisualSVN Serverphp2.…

java大量浮点数如何作比较,Java如何正确比较浮点数

看下面这段代码,将 d1 和 d2 两个浮点数进行比较,输出的结果会是什么?double d1 .1 * 3;double d2 .3;System.out.println(d1 d2);按照正常逻辑来看,d1经过计算之后的结果应该是0.3,最后打印的结果应该是 true&…

文本留言 php,一个php作的文本留言本的例子(一)

一个php作的文本留言本的例子(一)更新时间:2006年10月09日 00:00:00 作者:大家知道,数据库对于网络来说的重要性.由于cgi的复杂,现在asp和phpmysql已经成为主流.几乎所有的个人网页都要用到留言本,可是申请的留言本很不稳定.这为网上的交流带来了诸多不…

深度学习图像融合_基于深度学习的图像超分辨率最新进展与趋势【附PDF】

因PDF资源在微信公众号关注公众号:人工智能前沿讲习回复“超分辨”获取文章PDF1、主题简介图像超分辨率是计算机视觉和图像处理领域一个非常重要的研究问题,在医疗图像分析、生物特征识别、视频监控与安全等实际场景中有着广泛的应用。随着深度学习技术的…

php cookie 二级域名,php如何设置cookie对整个域名有效及二级域名

昨天获取cookie老是失败,各种查原因,然后测试只能在生成的目录下共享cookie,然后后面想起了这个原因。默认情况下的cookie仅对该域名(例如www.example.com)本身有效,出了该域名(例如test.example.com),cookie便会失效&…

ubuntu安装python_Linux下的Python开发配置鸭

linxu下python环境的开发配置前言linux是目前为止最好上手的系统也是最适合新手学习的系统而python是可以最快让大家知道怎么写出东西的语言,简单的几十个小时的学习之后就只需要看懂库的文档就可以很快地写出很好用的东西,于是很多人自然很喜欢这个组合…

java 里面write,java 中 System.out.println()和System.out.write()的区别

java 中 System.out.println()和System.out.write()的区别.这两个函数一个是System.out.write()输出字符流,System.out.println()是输出字节流,很简单。看下面这个程序就明白了。//import java.util.*;public class Test {public static void main(Strin…

高通cpu排行_安卓手机芯片排行:麒麟990 5G仅排第三,980还输给了765G?

众所周知,在移动端芯片行业,高通多年来都保持着一种舍我其谁的劲头,但随着科技的不断发展,其他厂商也开辟了自己的新天地,截至目前,全球主流的智能手机搭载的处理器主要来自于华为海思、高通骁龙、三星、联…

java编程规范每行代码窄字符,wiki/0xFE_编程规范.md at master · islibra/wiki · GitHub

0xFE_编程规范使用UTF-8编码使用空格缩进命名清晰表达意图, 少用缩写(行业通用除外, 如: requestreq, responseresp, messagemsg), 不应使用特殊前缀或后缀用复数形式代表集合\w{2,64}, 除循环变量i, j, k, 异常e外类型命名风格包全小写, 点号分割, 允许数字, 无下划线类, 接口…

keil4怎么移植其他人的程序_简单和你聊聊造血干细胞移植!

造血干细胞是个什么“鸟”?造血干细胞,人体血细胞的老祖宗。它的分裂方式也十分独特,由一个细胞分裂为两个细胞时,其中一个细胞会慢慢长大,增殖分化为红细胞、白细胞和血小板等等;另一个细胞仍然保持干细胞…

matlab 信号处理 教程,MATLAB信号处理仿真 实验_教程-学习文件.pdf

MATLAB信号处理仿真实验从观察正弦波开始用绳量给我的地界坐落在佳美之处我的产业实在美好杜伟韬duweitao广播电视数字化教育部工程研究中心2013年 4月23 日于 北京定福庄献给广播学院的核桃林,还有我的老师们目目目录录录0 修修修订订订记记记录录录和和和意意意见…

怎么在电脑上任意截屏_草地上打滚、墙上任意涂鸦,幼儿园让孩子“想怎么玩就怎么玩”...

(图为孩子们开心地在“山坡”上打滚。 学校供图)长江日报-长江网10月26日讯 10月26日,汉阳区玉龙幼儿园的孩子们冲上小山坡滑草,草地上打滚,滚筒里钻来钻去,墙上任意涂鸦,在梯子搭建的木桥上自由行走……孩子们自发地三…

pyaudio usb playback_苹果安卓手机充电器USB接口PSD源文件psd素材

分类:详情页类目:数码家电格式:psd体积:尺寸:790*12168编号:13182638软件: Photoshop CS6(.psd)颜色模式 : RGB图像类型:位图版权:独家版权LOGO/ 实景图/人物/字体/产品 …