第11单元Java输入与输出(实验1)Java文本IO应用_第1页
第11单元Java输入与输出(实验1)Java文本IO应用_第2页
第11单元Java输入与输出(实验1)Java文本IO应用_第3页
第11单元Java输入与输出(实验1)Java文本IO应用_第4页
第11单元Java输入与输出(实验1)Java文本IO应用_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第11单元Java输入与输出主讲人:龚迅炜Java程序设计实践教程实验1Java文本I/O应用目录2实验目标4拓展训练3实验内容1

知识要点Java文本I/O应用Reader是一个抽象类,在实施具体的文本读的过程中,需要根据流的具体形式使用子类实现。JDK提供了实现缓冲功能的BufferReader,实现过滤功能的FilterReader,针对字节数组的流CharArrayReader,针对管道的PipedReader,针对字符串的StringReader;另外还有一种针对二进制流的转换流InputStreamReader,它的作用是将原来按照二进制方式解析的流变成用字符编码方式解析的文本流。类似的,Writer也是一个抽象类,在实施具体的文本写操作中,也需要根据要输出的具体流选择合适的子类实现。JDK提供了BufferedWriter、FilterWriter,CharArrayWriter、PipedWriter、PrinterWriter和StringWriter,另外OutputStreamWriter也是一种转换流,实现二进制流转换为文本流。无论是哪种文本流,它们都有相同的父类Reader或Writer,所以各子类之间可以很方便的进行转换。知识目标:理解文本的概念,掌握字符串编码;理解输入输出设备和存储设备,掌握标准输入、标准输出和文件系统;理解流的概念,掌握字符流的基本读写操作,各类流之间的相互转换;理解文件、文件系统,掌握文件的读写操作。能力目标:能够运用字符流对文件进行读写操作,能够使用文件系统,能够灵活使用恰当的流进行字符文件的处理。素质目标:培养学生自主、开放的学习能力,能够查阅文献,阅读代码,整合修改提升业务水平。123验证性实验--诗歌的行文转换读取文件poem.txt,按下面所述进行修改后保存到poem文件中。文件中的诗的行文是从右向左的古代模式,现在需要程序处理后符合现代的行文规范从左向右排列。如图所示,左边为古代行文模式,右边为现代行文模式。publicclassStyleConvertor{ privatefinalFilefile; publicStyleConvertor(Filefile)throwsFileNotFoundException{ if(file.exists()&&file.isFile()) this.file=file; else thrownewFileNotFoundException("文件"+file+"无法找到或者是一个目录。"); } /** *将从右向左的行文转换为从左向右的行文 *1.首先读取源文档的行列数 *2.建立相应的行缓冲字符串数组 *3.逐行读取,并将相应的字符存储到行缓冲数组的对应位置 *4.最后将调整好的行缓冲字符串数组写入到指定文件中 */ publicvoidrightLeftConvertToLeftRight(){ //在此处添加代码 } /** *将从左向右的行文转换为从右向左的行文 *根据上面方法的经验,完成本方法的实现

*/ publicvoidleftRightConvertToRightLeft(){ //在此处添加代码 } /** *转换后的输出文件的文件名生成器 *@apiNote文件名生成过程中需要考虑文件的分隔符,文件名是否有后缀名的问题 *@paramflag如果flag为true,则文件内容按照从右向左的行文规范,文件名加_r后缀;否则文件内容按照从左向右的行文规范,文件名加_l后缀 *@returnrtnFileName作为生成的新文件的文件名 */ privateStringgetConvertFileName(booleanflag){ StringrtnFileName=null; //在此处添加代码 returnrtnFileName; }}publicclassStyleConvertorTest{ publicstaticvoidmain(String[]args){ if(testFileNotFound()==true){ System.out.println("无效文件路径测试通过!"); }else{ System.out.println("错误:无效文件路径测试没有通过!"); } //在此处添加代码,完成下面测试代码调用 } publicstaticbooleantestFileNotFound(){ booleanbRtn=false; //在此处添加代码 returnbRtn; } publicstaticbooleantestLeftRightConvertToRightLeft(){ booleanbRtn=false; //在此处添加代码 returnbRtn; } publicstaticbooleantestRrightLeftConvertToLeftRight(){ booleanbRtn=false; //在此处添加代码 returnbRtn; } //比较两个文件的内容是否一致,如果一致返回true,否则false privatestaticbooleancompareFile(Filesource,Filetarget){ booleanbRtn=false; //在此处添加代码 returnbRtn; }}验证性实验--上三角矩阵筛查读取文件matrix.txt,检测该文件中符合上三角矩阵的数量和矩阵写入到matrix_answer.txt文件中。标准结果存放在matrix_result.txt文件中。(1)完成相关类的设计,并完成测试。(2)matrix.txt文件的首行为矩阵的数量,每个矩阵之间用“%--”进行分割,如下所示。4%--1230155198%--1635691710192004781000251%--123480034569002351000610000021000008%--1598matrix文件的内容123480034569002351000610000021000008希望得到的文件内容publicclassMatrix{ privateint[][]elements; privateintrow; privateintcol; //可根据需要自行添加必要的private成员变量和成员方法

/** *构造方法 *根据参数elems初始化成员elements,如果参数不能构成矩阵则抛出异常;初始化后elements的值改变不能影响参数elems。 *@exception当参数elems不是一个矩阵时,抛出异常"错误:无法构造Matrix对象,参数数组不是一个矩阵。" *@paramelems */ publicMatrix(int[][]elems)throwsArithmeticException{

} /** *判断矩阵是否是上三角矩阵 *@return如果是上三角矩阵返回true;否则返回false */ publicbooleanisUpperTriangleMatrix(){

//在此处添加代码 returntrue; } /** *判断矩阵是否是方阵 *@return如果是方阵返回true;否则返回false */ publicbooleanisSquareMatrix(){ //在此处添加代码,实现矩阵是否是方阵 returnfalse; } /** *将矩阵转换为字符串 *例如矩阵是 123 转换为字符串 "123\n456\n789\n" * 456 * 789 */ publicStringtoString(){ StringsRtn=null; //在此处添加代码,实现矩阵的字符串输出 returnsRtn; }}publicclassMatrixFromFile{ privateFilefile; privateintnumOfMatrix; publicMatrixFromFile(Stringfilepath)throwsFileNotFoundException{ //在此处添加代码,实现文件初始化等 }

publicMatrix[]read(){ //在此处添加代码,实现矩阵文件读取 returnrtnMatrix; }}publicclassMatrixDemo{ publicstaticvoidmain(String[]args){ if(testReadFile()){ System.out.println("矩阵文件读取正确。"); }else{ System.out.println("错误:矩阵文件读取有问题。"); } if(testUpperTriangleMatrix()){ System.out.println("上三角矩阵判断正确。"); }else{ System.out.println("错误:上三角矩阵判断有问题。"); } }

publicstaticbooleantestReadFile(){ //在此处添加代码,实现矩阵文件读取测试 }

publicstaticbooleantestUpperTriangleMatrix(){ //在此处添加代码,实现上三角矩阵测试 }}验证性实验--字符串类型统计将input.txt作为标准输入,读取文件中的字符串;对读取的字符进行统计,统计其数字字符串和英文字符串的个数,将统计结果在控制台输入;如果读取的字符非数字、中文、英文的字符串则将其写入到系统默认的err流中后,程序继续执行;文件中的字符串以空格或回车进行分割。publicclassFileCharStatic{ privateFilefile; privateintenglishWordCount; privateintnumCount; privateintchineseCount; privateintotherCount;

//省略部分get方法 /** *构造方法,检查文件是否存在,如果存在则进行统计工作。 *@parampath传入的文件路径 *@throwsFileNotFoundException如果文件不存在则抛出异常,并提示"文件不存在,请检查。" */ publicFileCharStatic(Stringpath)throwsFileNotFoundException{ //根据提示补全代码 } /** *统计指定文件中的不同类型字符的数量 *@paramf */ privatevoiddoWordStaticFromFile(Filef){ try(//在此处添加代码){ Stringline; while((line=br.readLine())!=null){ String[]words=line.split(""); for(Stringword:words){ switch(check(word)){ case//在此处添加代码: chineseCount++; break; case//在此处添加代码: englishWordCount++; break; case//在此处添加代码: numCount++; break; default: otherCount++; //在此处添加代码 } } } }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); }

} /** *遍历要统计文件或文件夹,如果file是文件夹则仅统计该文件夹下的所有文件,不在遍历下层文件夹。 */ privatevoiddoWordStatic(){ if(file.isFile()) doWordStaticFromFile(file); else{ //在此处添加代码,遍历文件夹,并进行统计 } } /** *检测字符串是否符合相应要求 *@paramword待检测的字符串 *@return字符的类型 */ publicstaticWordTypecheck(Stringword){ WordTypewtRtn=WordType.OTHER; //在此处添加代码,使用String的matches方法进行word类型检查 returnwtRtn; }}设计性实验--获取WEB页面中图片标签的src属性值控制台输入WEB页面的URL,将主页上出现的img标签中src属性值保存到web_img_src.txt中,每个src值单独一行。使用java.util.Scanner类实现网页访问;页面访问后得到是一个html文档流,找到流中“<img”的位置,然后再找到该标签的src属性,并记录下其

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论