流与文件(二)

文本流

前面讨论的是二进制的输入输出,如果直接打开文件,会发现里面不是我们能读懂的内容。(用记事本打开里面是些空格)虽然二进制I/O速度快且效率高,但不易于人们阅读。java中的字符串,使用的是Unicode字符,例如字符串"1234"在字符编码中实际上是【00 31 00 32 00 33 00 34】,然而,Java所运行的环境有自己的字符编码,例如Windows用ASCII码,编码为【31 32 33 34】。为了在运行环境的编码和Unicode编码之间转换,Java提供了一套流过滤器。例如InputStreamReader/OutputStreamWriter

InputStreamReader in = new InputStreamReader(System.in);//从控制台读入,并自动将其转化为Unicode码。

字符集

在JDK1.4中引入的java.nio包通过引入Charset类来统一字符集的转换。

字符集给出了双字节Unicode码序列与在本地字符编码中采用的字节序列间的映射。一旦有了字符集,就可以用它在Unicode字符串和字节序列编码之间进行转换。

文本输出

进行文本输出时,应该使用PrintWriter。

PrintWriter out = new PrintWriter(new FileOutputStream("employee.txt"));

PrintWriter(OutputStream)构造器自动增加一个OutputStreamWriter来将Unicode字符转换为本地字符。

PrintWriter中有print方法和println方法,用以写入数据。

String name = "Harry Hacker";
double salary = 75000;
out.print(name);
out.print(‘ ‘);
out.println(salary);

这将下列字符

Harry Hacker 75000

写入输出流out中。随后字符被转换为字节病最终进入文件employee.txt中。

PrintWriter总是缓冲的,可以通过PrintWriter(Writer, boolean)构造器中的第二个参数来开启或关闭自动刷新。如果开启,那么println将刷新缓冲区。

文本输入

BufferedReader类,readLine方法,以行的方式读取文本。

BufferedReader in = new BufferedReader(new FileReader("employee.txt"));

如果没有输入数据,readLine方法返回null。

FileReader类已经把本地字节转化为Unicode字符。对于其他输入源,需要使用InputStreamReader

BufferedReader in = BufferedReader(new InputStreamReader(System.in));

时间: 2024-10-05 05:06:17

流与文件(二)的相关文章

java使用字节流和字符流实现文件复制

大家在Java开发中都会遇到文件复制的文件,众所周知,需要通过文件输入输出流实现. 那究竟该怎么做那,话不多说,直接上代码: 一,使用字节流复制文件 public class FileByteCopy {public static void main(String[] args) { FileByteCopy f= new FileByteCopy(); try { f.copy("d:/File/1.txt","d:/CopyFile/1.txt"); } cat

I/O流与文件

概述 一.何为I/O 外围设备分为,存储设备和输入/输出设备: 存储设备用于存储信息,如磁盘.U盘.光盘.磁带等,数据以文件形式保存在这些存储设备中: 输入/输出设备分为,输入设备和输出设备:输入设备指计算机接收数据的来源设备,如键盘.鼠标.扫描仪等:输出设备指计算机处理完毕的数据送往外部设备,如显示器.打印机等: I/O的中心是内存:在内存中,数据往外输送,即为输出:数据从外面进来,即为输入: 二.标准I/O流cin和cout 头文件iostream中,定义了两个流类:输入流类istream和

Java 运用流传输文件

实例1 package IO; import java.io.FileReader; import java.io.FileWriter; import java.io.Reader; import java.io.Writer; /** * 案例:利用字符流实现字符文件的拷贝1.txt -> 3.txt * 1.字符文件的读取:FileReader * 2.字符文件的写入:FileWriter * 3.循环上面的过程 */ public class FileCopyDemo1 { public

Java 字符流读写文件

据说,java读写文件要写很多,贼麻烦,不像c艹,几行代码就搞定.只能抄抄模板拿来用了. 输入输出流分字节流和字符流.先看看字符流的操作,字节转化为字符也可读写. 一.写入文件 1.FileWriter类: FileWriter fw=new FileWriter("hello");//在workspace工作空间里创建文件,文件名为hello FileWriter fw=new FileWriter("E:\\hello");//在E盘创建文件,文件名为hello

Java学习记录(补充八:Date类;Java流(Stream),文件(File)和IO)

Date类,Calendar类package Box1; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Random; //Date类 public class DateTest { public static void main(String[] args) { Date

Java:IO流与文件基础

Java:IO流与文件基础 说明: 本文所有内容包含图片均为MrSaber自己编写,转载请练习我哦. 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象称作 输入流,可以向其中写入一个字节序列的对象称作 输出流. ? 这些字节序列的来源可以是:文件.网络连接.内存块等. ? 抽象类InputStream和OutputStream是构成输入/输出(I/O)的基础. ? 因为面向字节的流

C++学习47 文件的概念 文件流类与文件流对象 文件的打开与关闭

迄今为止,我们讨论的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的.在实际应用中,常以磁盘文件作为对象.即从磁盘文件读取数据,将数据输出到磁盘文件.磁盘是计算机的外部存储器,它能够长期保留信息,能读能写,可以刷新重写,方便携带,因而得到广泛使用. 文件(file)是程序设计中一个重要的概念.所谓“文件”,一般指存储在外部介质上数据的集合.一批数据是以文件的形式存放在外部介质(如磁盘.光盘和U盘)上的.操 作系统是以文件为单位对数据进行管理的,也就是说,如果想找存在外部

流与文件:NIO.2的介绍和使用

传统的Java里,只有一个File类,即代表文件,又代表目录.Java 7新增了如下API来访问文件 Path  - 接口,代表一个平台无关的目录.提供了大量的方法来操作目录. Paths - 工具类.所有方法都是static的. Files - 操作文件的工具类.提供了大量的方法来操作文件.该类所包含的大量方法可能与我们日常一般的期望有些出入. 早期的Java只提供了File类来访问文件,其功能有限且性能不高,NIO.2提供了Path接口以及Paths和Files工具类来访问文件系统. 1.P

使用摘要流获取文件的MD5

摘要流是过滤流的一种,使用它可以再读取和写入流时获取流的摘要信息(MD5/SHA). 使用摘要流包装流时,需要额外传递一个MessageDigest对象, MessageDigest md=MessageDigest.getInstance("MD5"); DigestInputStream dis=new DigestInputStream(in, md); 摘要流复写了流的read.write方法,方法内部调用MessageDigest对象的upate()来更新摘要信息 publi

ifstream?流?判断文件是否结尾的函数eof(.xml

pre{ line-height:1; color:#800080; font-size:16px;}.sysFunc{color:#627cf6;font-style:italic;font-weight:bold;} .selfFuc{color:#800080;} .bool{color:#d2576f;} .condition{color:#000080;font-weight:bold;} .key{color:#000080;} .var{color:#800000;font-sty