龙空技术网

计算机等级二考试辅导:Java IO机试题及解答(第3部分)

杨教授工作室 59

前言:

此时各位老铁们对“java中run as”大致比较重视,姐妹们都需要剖析一些“java中run as”的相关知识。那么小编在网上收集了一些关于“java中run as””的相关资讯,希望咱们能喜欢,咱们一起来了解一下吧!

1、编程读出并显示某个文本文件数据内容的程序

(1)问题分析和解题思路

在java.io程序包中提供有实现对字符流数据进行读写的Reader/Writer类,它们是提供对字符流处理的功能类。其中的Reader流类提供以字符为单位从数据源中读取数据的功能,而Writer流类提供以字符为单位向数据源中写入数据的功能。因此,应用Reader/Writer流类可以实现对文本类型的文件进行读写操作。但由于它们都为抽象类,在应用中需要应用它们的子类InputStreamReader(InputStream in) / OutputStreamWriter(OutputStream out) 实现最终的读写功能。

因为InputStreamReader(InputStream in) 和OutputStreamWriter(OutputStream out) 流类可以使用指定的编码规范并基于字节流生成对应的字符流,如下为实现此功能的代码片段示例(其中的编码“iso-8859-1”可以改变为其它编码):

FileInputStream oneInputStream = new FileInputStream("someOneText.txt");

InputStreamReader oneInputStreamReader = new InputStreamReader(oneInputStream ," iso-8859-1");

但读者需要注意的是,为能正确地读出异种机上的字符,可以采用 ISO 8859_1的编码规范,因为它是一种映射到ASCII码的编码方式,可以在不同的平台之间正确地转换字符;此外,许多应用程序都使用 UTF(UTF-8或UTF-16)字符集编码来存储文本数据,此时也可以应用InputStreamReader 或者OutputStreamWriter流类读写UTF字符集编码的字符。只需要在创建InputStreamReader 或者OutputStreamWriter流类的对象实例时指定目标编码,参看如下的代码示例:

FileInputStream oneInputStream = new FileInputStream("someOneText.txt");InputStreamReader oneInputStreamReader = new InputStreamReader(oneInputStream ,"utf-8");

因此,可以编程应用InputStreamReader流类完成本问题的功能,以实现读出某个文本类型的文件内容。

(2)实现带缓存区的字符流读写的流类

在java.io程序包中除了提供完成基本的字符流数据进行读写的流类之外,还提供有实现带缓存区的字符流读写的流类。它们分别是BufferedReader(InputStreamReader isr, int size) 和BufferedWrite(OutputStreamWriter osr, int size)两个流类。

因此,在应用中为提高字符流的处理效率,可以采用缓冲机制流。为此,在JDK系统库中引入了BufferedReader和BufferedWriter两个流类,主要用来对字符流作成批的处理。BufferedReader类中的方法readLine()方法读起一行字符,而BufferedWriter类中的newLine()方法则是写入一行字符。由于提供缓冲机制,把任意的输入流或输出流“捆绑”到缓冲流上将获得性能的提高。并且可以在创建缓冲流对象时设置缓冲区的大小,如下代码示例是应用BufferedReader缓冲输入流类包装普通的文本字符输入流类InputStreamReader 的对象实例。

BufferedReader oneBufferedReader = new BufferedReader(oneInputStreamReader );

(3)在MyEclipse开发工具中创建出一个类名称为TypeTextFileContent,程序包名称为com.bluedream.javaio,并且包含有main()方法的Java程序类,TypeTextFileContent程序类的创建过程参看如下示例图所示。

(4)在TypeTextFileContent程序类中新增一个名称为typeSomeOneFileContent方法

在typeSomeOneFileContent方法中依据给定的目标文件名称字符串,创建出对应的文件流对象实例,但要遵守Java IO流的包装规则,先创建出FileInputStream类的对象实例,然后再应用InputStreamReader文本流对该对象实例进行包装,最后再应用BufferedReader对包装后的字符流再次包装,最终创建出BufferedReader缓冲文本字符流对象实例。实现这些功能的程序代码示例如下:

oneInputStream = new FileInputStream(targetTextFile);oneInputReader = new InputStreamReader(oneInputStream,"utf-8");oneBufferedReader = new BufferedReader(oneInputReader);

其中需要为文本字符流对象实例指定待读出的文本字符的编码格式,本示例设置为“utf-8”(与待操作的目标文本文件的编码格式保持一致性);然后根据所创建出的缓冲字符流对象逐行读出(应用readLine()方法)目标文本文件中的内容,并在控制台中显示输出;最后关闭文本字符流和释放文本字符流对象实例。typeSomeOneFileContent方法的最终程序代码示例请参看如下示例图所示的程序代码。

(5)编程TypeTextFileContent程序类中的main()方法

在main()中首先定义待打印的目标文本文件的名称和路径,本示例打印D:\someOneTextFile.txt文件的内容;然后对TypeTextFileContent类进行对象实例化,并通过其对象调用typeSomeOneFileContent方法,同时传入目标文本字符流对象实例。main()方法的最终程序代码示例参看如下示例图所示的程序代码。

(6)执行本程序示例TypeTextFileContent类的程序代码

在MyEclipse开发工具中右击源程序,在弹出的快捷菜单中选择“Run as”下拉菜单中的“Java Application”子菜单项目,将执行本示例TypeTextFileContent类程序。操作过程请参看如下示例图所示。

(7)TypeTextFileContent类程序的执行结果将在MyEclipse开发工具的控制台窗口中显示

程序执行后,将作者计算机磁盘中的d:\ someOneTextFile.txt文件的内容(为某个程序代码)打印输出在控制台中,所读出的内容完全与目标文件中的内容保持一致,参看如下示例图所示。

由于该文本文件中包含有中文字符,并且该文本字符文件在存储时设置了编码字符集为utf-8。因此在创建InputStreamReader字符流对象实例时需要指定编码格式为utf-8与待读出的文本数据的字符编码保持一致性,否则所读出的中文字符将为乱码,参看如下示例图所示的程序结果。

2、编程实现拷贝某个文本文件数据内容的程序

(1)问题分析和解题思路

由于InputStreamReader和OutputStreamWriter字符流类在创建流类的对象时必须以一个字节流作为原始的数据流来打开目标文件,这在有些应用中显得较啰嗦。为了能够直接将一个具体的文件名的文件直接转换为字符流类的对象实例,在java.io程序包中还为程序员提供了InputStreamReader和OutputStreamWriter字符流类的两个子类FileReader和FileWriter,直接给出目标文本文件名就可以创建出FileReader和FileWriter流类的对象实例。如下代码示例为创建FileReader或FileWriter流类的对象实例的代码片段:

FileReader oneFileReader = new FileReader("d:\someOneDocument.doc"); 或FileWriter oneFileWriter = new FileWriter ("d:\someOneDocument.doc");

而完成一次文件拷贝功能,其实从文件I/O的角度来看,涉及对文件的数据内容进行读/写两种操作方式。因此,应用FileReader和FileWriter流类可以实现对文本文件的拷贝功能。也就是首先应用FileReader流类创建出文本输入流类对象实例以实现对原文本文件的数据读取,而应用FileWriter流类创建出文本输出流类的对象实例以实现将读取的数据内容写入到目标文本文件中,从而完成对文本文件的数据拷贝功能,最后分别关闭输入和输出文本流类对象实例以释放所占用的系统资源。

(2)在MyEclipse开发工具中创建出一个类名称为CopySomeOneTextFile,程序包名称为com.bluedream.javaio,并且包含有main()方法的Java程序类,CopySomeOneTextFile程序类的创建过程参看如下示例图所示。

(3)编程CopySomeOneTextFile程序类的功能实现代码

为了提高程序的可读性,在CopySomeOneTextFile程序类中定义了三个方法,它们分别是createTextStream()、copyTextFile()、closeTextStream()等方法。其中createTextStream ()方法主要是创建出文本输入/输出字符流对象实例,而copyTextFile ()方法完成文本文件的数据内容的拷贝功能实现(读取源文本文件,并写入到目标文本文件中),最后的closeTextStream ()方法主要是关闭所创建的文本输入/输出字符流对象实例,并释放相关的存储空间。

createTextStream()、copyTextFile()、closeTextStream()等方法的最终实现的程序代码示例请参看如下示例图所示的程序代码。

在将所读出的某行文本内容写入到目标文件时,为了能够产生出回车换行的效果,需要追加回车换行的转义符“\r\n”;此外,为了能够在控制台中正确地显示出中文字符文本,需要在打印显示之前对字符串进行编码转换——也就是应用如下的语句:

oneLineTextString=new String(oneLineTextString.getBytes(),"UTF-8");

(4)编程CopySomeOneTextFile程序类中的main()方法的功能代码

在main()方法中主要是依据待拷贝的源文件名称和拷贝后的文件名称信息,通过调用createTextStream ()方法以创建出文本输入和输出流对象,然后再调用copyTextFile ()方法实现对文本文件中的数据内容的拷贝,最后再通过调用closeTextStream ()方法关闭文本输入和输出流对象实例以释放所占用的存储空间。main()方法的最终功能实现的程序代码请参看如下示例图所示的程序代码。

(5)执行本程序示例CopySomeOneTextFile类的程序代码

在MyEclipse开发工具中右击源程序,在弹出的快捷菜单中选择“Run as”下拉菜单中的“Java Application”子菜单项目,将执行本示例CopySomeOneTextFile类程序。操作过程请参看如下示例图所示。

程序执行之前,作者在计算机的D盘的根目录下应用Windows系统中的记事本程序创建一个文件名称为originalTextFile.txt的文本文件,在该文本文件中包含有待拷贝的内容。originalTextFile.txt文本文件的原始内容如下示例图所示。

本示例CopySomeOneTextFile类的程序代码执行后,将在作者的计算机D盘的根目录下创建出一个文件名称为copyTextFile.txt的文本文件——参看如下示例图所示。

copyTextFile.txt文件是拷贝后的目标文件,该文件中的内容来自于originalTextFile.txt原始文本文件的内容,并且在控制台中也显示出拷贝后的目标文件中的内容,参看如下示例图所示。

计算机等级二考试辅导:Java IO机试题及解答(第2部分)

计算机等级二考试辅导:Java IO机试题及解答(第1部分)

计算机等级考试辅导:“Java编程规范”单元辅导文档

计算机等级考试辅导:Java语言的诞生、目标、特点和实现机制

计算机等级二级考试辅导:综合应用上机模拟题及解答(第2部分)

标签: #java中run as #java编写一个试题库管理程序 #java io编程题