java面向字符的输入流_详细解读Java编程中面向字符的输入流

字符流是针对字符数据的特点进行过优化的,因而提供一些面向字符的有用特性,字符流的源或目标通常是文本文件。 Reader和Writer是java.io包中所有字符流的父类。由于它们都是抽象类,所以应使用它们的子类来创建实体对象,利用对象来处理相关的读写操作。Reader和Writer的子类又可以分为两大类:一类用来从数据源读入数据或往目的地写出数据(称为节点流),另一类对数据执行某种处理(称为处理流)。

面向字符的输入流类都是Reader的子类,其类层次结构如图所示。

4fdc54237dd6bc789325e37ef2bae721.png

下表列出了 Reader 的主要子类及说明。

970d62b845bff1e7adbf7222387141bb.png

Reader 所提供的方法则如这张表所示,可以利用这些方法来获得流内的位数据:

9e49877e7cb5a501ef12e9507ecd882f.png

使用 FileReader 类读取文件

FileReader 类是 Reader 子类 InputStreamReader 类的子类,因此 FileReader 类既可以使用Reader 类的方法也可以使用 InputStreamReader 类的方法来创建对象。

在使用 FileReader 类读取文件时,必须先调用 FileReader()构造方法创建 FileReader 类的对象,再调用 read()方法。FileReader 构造方法的格式为:

public FileReader(String name); //根据文件名创建一个可读取的输入流对象

【例】利用 FileReader 类读取纯文本文件的内容

import java.io.*;

class ep10_1{

public static void main(String args[]) throws IOException{

char a[]=new char[1000]; //创建可容纳 1000 个字符的数组

FileReader b=new FileReader("ep10_1.txt");

int num=b.read(a); //将数据读入到数组 a 中,并返回字符数

String str=new String(a,0,num); //将字符串数组转换成字符串

System.out.println("读取的字符个数为:"+num+",内容为:\n");

System.out.println(str);

}

}

b9d2e0aa7d24ed4ba9ef0477a4d8bbaa.png

需要注意的是,Java 把一个汉字或英文字母作为一个字符对待,回车或换行作为两个字符对待。

使用 BufferedReader 类读取文件

BufferedReader 类是用来读取缓冲区中的数据。使用时必须创建 FileReader 类对象,再以该对象为参数创建 BufferedReader 类的对象。BufferedReader 类有两个构造方法,其格式为:

public BufferedReader(Reader in); //创建缓冲区字符输入流

public BufferedReader(Reader in,int size); //创建输入流并设置缓冲区大小

【例】利用 BufferedReader 类读取纯文本文件的内容

import java.io.*;

class ep10_2{

public static void main(String args[]) throws IOException{

String OneLine;

int count=0;

try{

FileReader a=new FileReader("ep10_1.txt");

BufferedReader b=new BufferedReader(a);

while((OneLine=b.readLine())!=null){ //每次读取 1 行

count++; //计算读取的行数

System.out.println(OneLine);

}

System.out.println("\n 共读取了"+count+"行");

b.close();

}

catch(IOException io){

System.out.println("出错了!"+io);

}

}

}

106ece0176aed5191a1bd911f07e6af8.png

需要注意的是,执行 read()或 write()方法时,可能由于 IO 错误,系统抛出 IOException 异常,需要将执行读写操作的语句包括在 try 块中,并通过相应的 catch 块来处理可能产生的异常。

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

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

相关文章

任务信号量

在实际任务间的通信中,一个或多个任务发送一个信号量或者消息给另一个任务是比常见的,而一个任务给多个任务发送信号量和消息相对比较少。前面所讲的信号量和消息队列均是单独的内核对象,是独立于任务存在的。这两章要讲述的任务信号量和任务…

域名服务商GoDaddy第四季度扭亏为盈

2月18日消息,据财经网站MarketWatch报道,域名服务提供商GoDaddy周三公布了第四季度财报。公司期内利润与营收均好于预期,给出的营收指导亦符合预测水平。 财报显示,第四季度中GoDaddy营收同比增长14%,为4.254亿美元&am…

易于使用的人工智能_需求分析:如何使用这种易于启动的方法+一个案例研究...

易于使用的人工智能by Turgay elik由Turgayelik 需求分析:如何使用这种易于启动的方法一个案例研究 (Requirement Analysis: how to use this startup-friendly approach a case study) In our previous blog posts, we explained why we decided to develop the …

java writeboolean_Java DataOutputStream writeBoolean()方法(带示例)

DataOutputStream类writeBoolean()方法writeBoolean()方法在java.io包中可用。writeBoolean()方法用于将给定的布尔字节写入基本输出流,因此成功执行后写入的变量计数器为1。writeBoolean()方法是一种非静态方法,只能通过类对象访问,如果尝试…

【BZOJ4300】—绝世好题(二进制dp)

传送门 考虑到只需要bi&bi−1̸0b_i\&b_{i-1} \not0bi​&bi−1​̸​0 由于&\&&,我们考虑二进制下只需要一位不为0就可以了f[i]f[i]f[i]表示当前数下,第iii位不为0的最优长度 那就是需要枚举当前这个数所有位就…

爱立信与中国联通成功完成国内首个LTE三载波聚合大规模部署测试

近日,爱立信与中国联通网络技术研究院、联通四川省公司、联通成都市分公司、Qualcomm Incorporated子公司Qualcomm Technologies, Inc.合作成功实现了国内首个三载波聚合大规模部署和运行测试,下行单用户峰值速率达到375Mbps。该项目充分验证了载波聚合大…

七牛服务器入门教程_教程:使用无服务器,StepFunction和StackStorm构建社区的入门应用程序…...

七牛服务器入门教程by Dmitri Zimine由Dmitri Zimine 使用无服务器,StepFunction和StackStorm Exchange构建社区注册应用 (Building a community sign-up app with Serverless, StepFunctions, and StackStorm Exchange) Build a real-world serverless applicatio…

devexpress java_DevExpress使用心得一:换肤

最近要用到界面控件DevExpress。一句话:很好很强大,比起VS自带的winform界面,种类和花样要多了不少。然而,强力的功能带来了庞大的信息量,所以我打算通过一些小模块来和大家一起对它进行探讨和研究。今天先研究一下它的…

《低功耗蓝牙开发权威指南》——第3章低功耗蓝牙的体系结构

本节书摘来自华章社区《低功耗蓝牙开发权威指南》一书中的第3章低功耗蓝牙的体系结构,作者 (英)Robin Heydon,更多章节内容可以访问云栖社区“华章社区”公众号查看 第3章低功耗蓝牙的体系结构专注简单是我一直以来信奉的价值观。…

[福建集训2011][LOJ10111]相框

这题主要还是分类讨论欧拉回路 首先对于导线一端没有东西的新建一个节点 由于原图不一定连通所以需要用到并查集判断有多少个连通块 将一条导线连接的两个焊点连接 然后先对于只有一个连通块考虑 1.如果一个焊点是孤立点 它对于导线无影响跳过 2.如果一个焊点度数大于2 它必须被…

TJpgDec—轻量级JPEG解码器

TJpgDec—轻量级JPEG解码器 本文由乌合之众lym瞎编,欢迎转载blog.cnblogs.net/oloroso 下文中解码一词皆由decompression/decompress翻译而来。 TJpgDec是一个为小型嵌入式系统高度优化的创建JPEG图像的解码模块。它工作时占用的内存非常低,以便它可以集…

帮助中心 开源_对开源的贡献帮助我获得了Microsoft的实习机会。 这就是它可以为您提供帮助的方式。

帮助中心 开源“Accomplished X by implementing Y which led to Z.” “通过实现导致Z的Y来完成X。” When I interviewed for software engineering internships this past fall, my open source contributions helped me stand out from the crowd.去年秋天,当我…

java 操作窗口_java selenium (十二) 操作弹出窗口

public static void testMultipleWindowsTitle(WebDriver driver) throws Exception{String url"E:\\StashFolder\\huoli_28hotmail.com\\Stash\\Tank-MoneyProject\\Selenium Webdriver\\AllUIElement.html";driver.get(url);// 获取当前窗口的句柄String parentWin…

1970“变种”bug连WiFi热点iOS设备会变砖?

据悉,该漏洞和此前“1970”的bug有关系,但不完全一样。 威锋网讯,你还记得将 iOS 设备系统时间调至 1970.1.1 会让设备变砖的 bug 么?尽管苹果在 iOS 9.3 中已经将这个 bug 修复,但据安全研究员指出,他们发…

Centos7 安装python3.7.2

下载python3.7.2源码 wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz 下载完后对压缩包解压缩 tar -xf Python-3.6.3.tgz 进入解压缩完后的文件夹: cd Python-3.7.2 配置(需要加上--with-ssl,不然pip不能安装相关函数库,pyt…

华为 9

package NiukeBrush; import java.util.Iterator; //排序与查重 import java.util.LinkedHashSet; import java.util.Scanner; import java.util.Set;//改进做法 public class Huawei9next {public static void main(String[] args) {// TODO Auto-generated method stub//键盘…

印刷点阵字体_印刷术如何确定可读性:衬线与无衬线,以及如何组合字体。

印刷点阵字体by Harshita Arora通过Harshita Arora For digital design, it’s important to know and understand how to use and how to combine different fonts. There’s a font for every mood!对于数字设计,重要的是了解和理解如何使用以及如何组合不同的字…

java中setattribute_浅谈Java web 中request的setAttribute()用法

在两个JSP代码片中有这样两端程序:JSP1代码String [] testnew String[2];test[0]"1";test[1]"2";request.setAttribute("test",test) ;response.sendRedirect("jsp2.jsp");JSP2代码String test[](String[])request.getAttr…

基础拾遗------webservice详解

基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗------接口详解 基础拾遗------泛型详解 基础拾遗-----依赖注入 基础拾遗-----数据注解与验证 基础拾遗-----mongoDB操作 基础…

南京打造大数据创新孵化平台

9月9日上午,南京微软云暨移动应用孵化平台在南京开发区新港高新园揭牌运营,项目创业大赛同步启动。 据悉,南京微软云暨移动应用孵化平台将打造以“云物大智”产业为核心的创新创业孵化平台。平台代理总经理童雪松介绍,平台汇集了强…