河南工业大学java实验四.docx
班级计科 1201姓名学号201216010506成绩实验 4 Java 的输入机制I 实验目的1 . Java 如何操作文件2 . 了解 Java 中 的输入机 制;如何 从控 制台 输入 ,如何用Stream 和 Reader 显示文件中的内容。II 实验内容1 . 递归遍历目录,显示其中的文件名。a. 源代码b. package com.fileTest;c.d.importjava.io.File;e.f. public class BianLi 遍历目录,显示文件的名字 g.h. /i. * paramargsj. */k.publicstaticvoidmainString args l.m.File f new FileD/360安全浏览器下载 ;n.listChidsf; 调用一个列出目录的方法o. 创建一个File对象p. q.r.s.t.publicstaticvoidlistChidsFile fu.v. System.out .printlnf.getName;w.x.if f.isDirectory 如果不是目录,退出y.z.return;aa.else bb.cc. File fs f.listFiles;dd.for inti0;ifs.length;iee.ff.listChidsfsi;gg.hh. ii. jj. kk. ll. 运行截图2 . 用 Stream 的 子 类 读 入 一个 英 文 文 本 文 件, 并 用System.out 显示其中的内容。a. 源代码b. package com.fileTest;c.d.importjava.io.*;e.f.publicclassFile g.h. /i. * paramargsj. */k.publicstaticvoidmainString argsthrowsIOExceptionl. m. TODOAuto-generated stubn.o.String file src/abc.java; 英文本文件p.File d new File;实列化对象q.d.readFilefile; 调用 readFile方法r.s. t.u.publicvoid readFileString fileNamethrowsIOExceptionv.Stream in new FileStreamfileName;创建字节流对象w.x. TODOAuto-generated stuby. try z.intb 0 ;aa.while true bb.cc.b in.read;得到内容判断是否结束dd.if b-1ee.break ;ff.System. out .printchar b; 得到内容进行处理, 转换成字符型输出gg.hh.ii. finallyjj.ifin null kk.in.close;关闭流ll. mm.nn. oo. pp. qq. 运行截图rr.3 .用 Reader 的子类读入一个字符文件,并用System.out 显示其中的内容。1 源代码package com.fileTest;importjava.io.*;publicclassFileReaderBy /* paramargs* throws IOException/publicstaticvoid mainString argsthrowsIOException TODOAuto-generated stubFileReaderBy a new FileReaderBy; 创建一个对象a.readFilesrc/fly.txt; 调用方法读入字符文件publicvoidreadFileString filenamethrowsIOException TODOAuto-generated stubBufferedReader b null ;try b new BufferedReadernew FileReaderfilename,8*1024;String line null ; 得到内容并判断是否到流的末尾while line b.readLinenull/ / 得到的内容进行处理System. out .printlnline;输出结果finallyif b nullb.close; 关闭流运行截图4 . 从控制台输入 Student 类的信息,包括学号、姓名、年龄,如输入错误,提示用户重新输入。创建该类,并在 toString 方法中输入个人信息。1 源package File;importcom.java.ErrorException;publicclassStudents 学号privatelongnum ; 姓名privateStringname ; 年龄privateintage;publicStudentspublicvoidsetIdlong numthis . num num;publicvoidsetNameString namethis . name name ;publicvoidsetAgeintage throwsErrorException if age0age120t hrow new ErrorException;this . age age; Overridereturnpublic num String toStringname age; 返回个人信息代码publicclassByScanner /* paramargs*/publicstaticvoid mainString args TODOAuto-generated stubStudents s new Students;Scanner sc new Scanner System.intid 0;String namenull ; ;intage 0 ;in;String len null;while true trySystem.out . println 请输入学号len sc.nextLine;id Integer.parseInt len;break ; ;s.setIdid;catch Exception esc.nextLine;System. out .println error,please innput again;while true try System. out . printlnname sc.next; 请输入姓名 ;s.setNamename;break ;catch Exception e sc.nextLine;System. out .println error,please innput again;while true try System. out . println 请输入年龄 ;age sc.nextInt;s.setAgeage;break ;catch Exception e sc.nextLine;System. out .println error,please innput again;System.out .println 该学生的信息为 s.toString;运行截图5 . 增加( 1)中的功能,显示文件的大小,目录的话显示其中包括的所有文件的大小。注意显示文件大小的单位( KB或 MB)。a. 源代码b. package filebianli;c.d.e.importjava.text.Decimalat;f. import java.io.*;g. public class Bianlih. i.publiclong getFileSizesFile fthrowsException 取得文件大小j.long s0;k.iff.exists l.FileStream fisnew FileStreamf;m. s fis.available;n.else o. f.createNewFile;p.System.out .println 文件不存在 ;q. r.returns;s. t. 递归u.publiclong getFileSizeFile fthrowsException 取得文件夹大小v. w.long size 0;x. File flist f.listFiles;y.for inti 0; i flist.length ; iz. aa.ifflisti.isDirectorybb. cc.size size getFileSizeflisti;dd.elseee. ff.size size flisti.length;gg. hh. ii.returnsize;jj. kk.publicString etFileSizelong fileS 转换文件大小ll.Decimalat df new Decimalat .00 ;mm.String fileSizeString ;nn.iffileS 1024 oo.fileSizeString df.atdouble fileS B ;pp.elseiffileS 1048576 qq.fileSizeString df.atdouble fileS / 1024 K ;rr.elseiffileS 1073741824 ss.fileSizeString df.atdouble fileS / 1048576 M ;tt.elseuu.fileSizeString df.atdouble fileS / 1073741824 G ;vv. ww.returnfileSizeString;xx. yy.zz.public long getlistFile f归求取目录文件个数aaa.bbb.System.out .printlnf.getName;ccc.longsize 0;ddd.File flist f.listFiles;eee.sizeflist.length;fff.forint i 0; i flist.length ; i ggg.ifflisti.isDirectory hhh.size size getlistflisti;iii.size;jjj.kkk.lll.returnsize;mmm.nnn. ooo.ppp.public staticvoid mainString argsqqq.rrr.Bianli g new Bianli;sss.ttt.tryuuu.vvv.longl 0;www.xxx.File f new FileD/360安全浏览器下载 ;yyy.iff.isDirectory 如果路径是文件夹的时候zzz.System.out .println 文件个数g.getlistf;aaaa.System.out .println 目录 ;bbbb.l g.getFileSizef;cccc.System.out .println 目录的大小为 g.etFileSizel;dddd.else eeee.System.out .println文件个数1;ffff.System.out .println 文件 ;gggg.l g.getFileSizesf;hhhh.System.out .println 文件的大小为 g.etFileSizel;iiii.jjjj.kkkk.catch Exception ellll.mmmm.e.printStackTrace;nnnn.oooo. pppp. qqqq.rrrr. 运行截图ssss.tttt.III 在本次实验中的问题和解决方法那个第四题当输入学号如果是0 开头 ,那输出结果就会被舍弃因为不是一个数,如果非要输入0 开头的学号,还没找到解决的办法, 解决了那个输学号空格问题,解决年龄超过一定数和负数问题,文件显示大小出现的问题,看了下博客园的写的。IV 心得体会Java 博大进深,不懂的很多的,继续努力学习吧include malloc.hinclude time.hinclude sys/time.hinclude stdio.hdouble wtimevoid ;int mainint arc , char arvint stepLength 0 ;int j 0 ;while arv1j 0stepLength stepLength * 10 arv1j - 48;j ;int * arr int *malloc64 * 1024 * 1024 * sizeofint;long i 0 ;long length 64 * 1024 * 1024;double timeStart , timeEnd ;timeStart wtime;fori 0 ; i length ; i i stepLength arri arri * 3 ;timeEnd wtime;printf5.10f n, doubletimeEnd - timeStart;freearr;return 0;double wtimevoid double now_time ;struct tim etstart ;struct timezone tzp ;ifgettimeofdaynow_time doubleetstart.tv_sec doubleetstart.tv_usec/1000000; return now_time;