java 字符流_Java™ 教程(字符流)

字符流

Java平台使用Unicode约定存储字符值,字符流I/O自动将此内部格式与本地字符集进行转换,在Western语言环境中,本地字符集通常是ASCII的8位超集。

对于大多数应用程序,具有字符流的I/O并不比具有字节流的I/O复杂,使用流类完成的输入和输出会自动转换为本地字符集和从本地字符集转换,使用字符流代替字节流的程序会自动适应本地字符集并为国际化做了准备 — 所有这些都无需程序员的额外努力。

如果国际化不是优先事项,你可以简单地使用字符流类,而不必过多关注字符集问题,之后,如果国际化成为优先事项,你的程序可以进行调整而无需进行大量重新编码。

使用字符流

所有字符流类都派生自Reader和Writer,与字节流一样,有专门用于文件I/O的字符流类:FileReader和FileWriter,CopyCharacters示例说明了这些类。

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

public class CopyCharacters {

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

FileReader inputStream = null;

FileWriter outputStream = null;

try {

inputStream = new FileReader("xanadu.txt");

outputStream = new FileWriter("characteroutput.txt");

int c;

while ((c = inputStream.read()) != -1) {

outputStream.write(c);

}

} finally {

if (inputStream != null) {

inputStream.close();

}

if (outputStream != null) {

outputStream.close();

}

}

}

}

CopyCharacters与CopyBytes非常相似,最重要的区别是CopyCharacters使用FileReader和FileWriter代替FileInputStream和FileOutputStream进行输入和输出。请注意,CopyBytes和CopyCharacters都使用int变量来读取和写入,但是,在CopyCharacters中,int变量在其最后16位中保存一个字符值,在CopyBytes中,int变量在其最后8位中保存一个字节值。

使用字节流的字符流

字符流通常是字节流的“包装器”,字符流使用字节流来执行物理I/O,而字符流处理字符和字节之间的转换,例如,FileReader使用FileInputStream,而FileWriter使用FileOutputStream。

有两种通用的字节到字符“桥接”流:InputStreamReader和OutputStreamWriter,当没有符合你需求的预打包字符流类时,使用它们来创建字符流。

面向行的I/O

字符I/O的单位通常比单个字符大,一个常见的单位是行:一串字符,末尾有一个行终止符,行终止符可以是回车/换行序列(“\r\n”),单个回车符(“\r”)或单个换行符(“\n”),支持所有可能的行终止符允许程序读取在任何广泛使用的操作系统上创建的文本文件。

让我们修改CopyCharacters示例以使用面向行的I/O,为此,我们必须使用两个我们以前从未见过的类,BufferedReader和PrintWriter。

CopyLines示例调用BufferedReader.readLine和PrintWriter.println来一次输入和输出一行。

import java.io.FileReader;

import java.io.FileWriter;

import java.io.BufferedReader;

import java.io.PrintWriter;

import java.io.IOException;

public class CopyLines {

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

BufferedReader inputStream = null;

PrintWriter outputStream = null;

try {

inputStream = new BufferedReader(new FileReader("xanadu.txt"));

outputStream = new PrintWriter(new FileWriter("characteroutput.txt"));

String l;

while ((l = inputStream.readLine()) != null) {

outputStream.println(l);

}

} finally {

if (inputStream != null) {

inputStream.close();

}

if (outputStream != null) {

outputStream.close();

}

}

}

}

调用readLine会返回一行文本,CopyLines使用println输出每一行,println附加当前操作系统的行终止符,这可能与输入文件中使用的行终止符不同。

有许多方法可以在字符和行之外构建文本输入和输出,有关更多信息,请参阅扫描和格式化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的体育馆管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本体育馆管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此体育馆管理系统利用当下成熟完善的SpringBoot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线选择试题并完成答题,在线查看考核分数。管理员管理收货地址管理、购物车管理、场地管理、场地订单管理、字典管理、赛事管理、赛事收藏管理、赛事评价管理、赛事订单管理、商品管理、商品收藏管理、商品评价管理、商品订单管理、用户管理、管理员管理等功能。体育馆管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:体育馆管理系统;SpringBoot框架;Mysql;自动化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值