实验内容
1、使用Scanner类解析文件。
(1)准备文件test.txt内容,内含字符、数字等文本信息;
(2)使用Scanner类读取里面的字符信息和数字信息分别输出。

package cn.sdut.cs;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;public class Main {public static void main(String[] args) throws FileNotFoundException {File file = new File("e:/java/test.txt");Scanner reader = new Scanner(file);StringBuffer sbf1 = new StringBuffer();StringBuffer sbf2 = new StringBuffer();String str;while(reader.hasNext()) {str = reader.nextLine();for(int i = 0; i < str.length(); i++) {if(str.charAt(i) >= '0' && str.charAt(i) <= '9') {sbf1.append(str.charAt(i));} else {sbf2.append(str.charAt(i));}}}System.out.println("文件内的数字信息有:" + sbf1);System.out.println("文件内的字符信息有:" + sbf2);reader.close();}}

文件内的数字信息有:1111111000002222
文件内的字符信息有:耶斯莫拉粗梅不鸡丢ysmlguolaoshi

2、利用对象输入/输出流进行文件的读写。
根据要求编写程序:
(1)创建类Student,内含学号、姓名、年龄、班级等属性,重写父类的toString()方法,用于输出学生的信息;
(2)建立测试类,建立Student类的对象数组stuArray,里面放置若干个学生对象,将数组中的数据依次写入文件stu.dat;然后读取该文件中的信息,依次还原出数组中各Student对象的信息。

package cn.sdut.cs;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;class Student implements Serializable {// 对象需要被写出到文件上,那么对象所属的类必须要实现Serializable接口String id, name;int age;char sex;String cla;public Student(String id, String name, int age, char sex, String cla) {super();this.id = id;this.name = name;this.age = age;this.sex = sex;this.cla = cla;}@Overridepublic String toString() {return "id:" + id + "\tname:" + name + "\tage:" + age + "\tsex:" + sex + "\tcla:" + cla;}
}public class Main {public static void main(String[] args) throws IOException, ClassNotFoundException {Student stu1 = new Student("110506001", "郭泫雅", 20, 'w', "rj01");Student stu2 = new Student("110506002", "章鱼妹", 18, 'w', "rj01");Student stu3 = new Student("110506003", "哦雅思", 18, 'm', "rj01");Student[] stuArray = new Student[] { stu1, stu2, stu3 };// 创建学生对象数组ObjectOutputStream obos = new ObjectOutputStream(new FileOutputStream("stu.dat"));// 输出流写进stu.dat文件里ObjectInputStream obis = new ObjectInputStream(new FileInputStream("stu.dat"));//输入流从stu.dat文件中读出obos.writeObject(stuArray);//将stuArray写入 ObjectOutputStreamObject object = obis.readObject();//从 ObjectInputStream 读取对象.反序列化if(object instanceof Student[]) {//判断object是否是后面的类,或者其子类、实现类的实例Student [] stus = (Student[]) object;for(Student i : stus) {//foreachSystem.out.println(i);}}obos.close();obis.close();}}

输出:
id:110506001 name:郭泫雅 age:20 sex:w cla:rj01
id:110506002 name:章鱼妹 age:18 sex:w cla:rj01
id:110506003 name:哦雅思 age:18 sex:m cla:rj01

3、用打开文本对话框选取文件,读写文件内容。
用打开文本对话框选取文件,读取文件内容,在显示器中显示出来,进行小写字母转换成大写字母,然后用保存文本对话框选取目标文件,向目标文件里面追加写入处理后的字符。

package cn.sdut.cs;import java.io.*;
import javax.swing.JFileChooser;public class Main {public static void main(String[] args) throws IOException {StringBuffer sbf = new StringBuffer();JFileChooser chooser = new JFileChooser();if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){File file = chooser.getSelectedFile();BufferedReader br = new BufferedReader(new FileReader(file));String line;while ((line = br.readLine()) != null){line = line.toUpperCase();sbf.append(line);}System.out.println(sbf);br.close();}if (chooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION){File file = chooser.getSelectedFile();BufferedWriter bw = new BufferedWriter(new FileWriter(file));bw.write(sbf.toString());bw.flush();bw.close();}}
}

4、读取网络资源,写出代码至文件。
读取"http://www.sdut.edu.cn"网页内容,存至"sdut.html"。
提示语句:

URL url=new URL("http://www.sdut.edu.cn");
InputStream is = url.openStream();package cn.sdut.cs;import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Arrays;public class Main {@SuppressWarnings("resource")public static void main(String[] args) throws IOException {URL url = new URL("http://www.sdut.edu.cn");InputStream is = url.openStream();// 输入流,用来读取OutputStream os = new FileOutputStream("e:/sdut.html");// 输出流byte[] bytes = new byte[20];int len;while ((len = is.read(bytes)) != -1) {System.out.println(Arrays.toString(bytes));os.write(bytes, 0, len);}}}

5、利用各种输入输出流进行读写文件,分析其读写效率。
读出文件D:\test1.txt的内容,显示在屏幕的同时,将文件写至D:\test2.txt中,计算其执行的时间,从而分析执行的效率。
提示,可用如下的输入/输入流类:
字节输入/输出流:FileInputStream和FileOutputStream、BufferedInputStream和BufferedOutputStream、DataInputStream和DataOutputStream;

package cn.sdut.cs;import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;public class Main {public static void main(String[] args) throws IOException {//FileReader和FileWriterReader ir = new FileReader("d:/test1.txt");//字符输入流Writer wr = new FileWriter("d:/test2.txt");//字符输出流long t1 = System.currentTimeMillis();char[] chars = new char[10];//缓冲区int len1 = 0;while((len1 = ir.read(chars)) != -1) {wr.write(chars, 0, len1);System.out.println(new String(chars, 0, len1));}ir.close();wr.close();long t2 = System.currentTimeMillis();System.out.println(t2 - t1);//BufferedReader 和 BufferedWriterInputStream is = new FileInputStream("d:/test1.txt");OutputStream os = new FileOutputStream("d:/test2.txt");BufferedInputStream bis = new BufferedInputStream(is);BufferedOutputStream bos = new BufferedOutputStream(os);long t3 = System.currentTimeMillis();byte[] bytes = new byte[10];int len2 = 0;while((len2 = bis.read(bytes))!=-1){bos.write(bytes, 0, len2);System.out.println(new String(bytes, 0, len2));}bis.close();bos.close();is.close();os.close();long t4 = System.currentTimeMillis();System.out.println(t4-t3);}
}

6、利用DataInputStream和DataOutputStream读写文件。
将数字1-100、字母A-Z、a—z写出至文件D:\abc.txt中,然后读取出来,显示在屏幕上。

package cn.sdut.cs;import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class Main {public static void main(String[] args) throws IOException {FileOutputStream fou = new FileOutputStream("D:/abc.txt");DataOutputStream dO = new DataOutputStream(fou);FileInputStream fiu = new FileInputStream("D:/abc.txt");DataInputStream dI = new DataInputStream(fiu);// 写进文件for (int i = 1; i <= 100; i++) {// 1-100dO.writeInt(i);}for (int i = 65; i <= 90; i++) {// A-ZdO.writeChar(i);}for (int i = 97; i <= 122; i++) {// a-zdO.writeChar(i);}dO.close();// 读取输入流显示在屏幕上for (int i = 1; i <= 100; i++) {if (i != 100)System.out.print(dI.readInt() + " ");elseSystem.out.println(dI.readInt());}for (int i = 65; i <= 90; i++) {if (i != 90)System.out.print(dI.readChar());elseSystem.out.println(dI.readChar());}for (int i = 97; i < 122; i++) {if (i != 122)System.out.print(dI.readChar());elseSystem.out.println(dI.readChar());}dI.close();}
}

7、利用File类进行文件及文件夹名称的显示。
编写应用程序,列出指定目录(d:/test)下的所有文件和目录名,然后将该目录下的所有文件后缀名为.txt的文件过滤出来显示在屏幕上。

package cn.sdut.cs;import java.io.File;
import java.io.FilenameFilter;
import java.util.Scanner;public class Main {//列出一个目录及子目录下的所有文件和名称public static void listSubDirectory(File dir) {if (dir.isDirectory()) {// 判断该对象是否是目录File[] listFiles = dir.listFiles();if (listFiles != null) {for (File file : listFiles) {if (file.isFile()) {System.out.println(file);} else {listSubDirectory(file);// 是目录的话递递归调用}}}} else {System.out.println(dir + "不是目录!");}}public static void listtxt(File file) {String[] listfilenames = file.list(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {if (name.endsWith(".txt"))return true;return false;}});for (String filename : listfilenames) {System.out.println(filename);}}public static void main(String[] args) {Scanner reader = new Scanner(System.in);File file1 = new File("d:/test");Main.listSubDirectory(file1);File file2 = new File("d:/test");Main.listtxt(file2);reader.close();}
}

8、使用File类创建一个多层目录d:\java\ch10\src。

package cn.sdut.cs;import java.io.File;public class Main {public static void main(String[] args) {File file = new File("d:/java/ch10/src");if(!file.exists()) {file.mkdirs();//直接创建多层目录} else {file.delete();}}
}

9、使用File类列出某一个目录下创建日期晚于2017-08-10的文件。

package cn.sdut.cs;import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner reader = new Scanner(System.in);String s = reader.nextLine();//输入目录File file = new File(s);File[] list = file.listFiles();//此目录下的所有文件String day = "2017-08-10 00:00:00";for(int i = 0; i < list.length; i++) {long st = list[i].lastModified();//文件最后修改时间SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date = new Date(Long.parseLong(String.valueOf(st)));String day2 = sdf.format(date);if(day2.compareTo(day) > 0) {//符合时间晚于的就输出System.out.println(list[i] + " " + day2);}}reader.close();}
}

10、利用File类编程完成如下任务:
(1)列出一个目录下的所有文件和目录名称;
(2)列出一个目录及子目录下的所有文件名称;
(3)列举一个目录下的所有.java文件名称;
(4)列举一个目录及其子目录下的所有.java文件名称。

package cn.sdut.cs;import java.io.File;
import java.io.FilenameFilter;public class Main {// 1.列出一个目录下的所有文件和目录名称public static void listDirectory(File dir) {if (dir.isDirectory()) {// 判断该对象是否是目录String[] filenames = dir.list();if (filenames != null) {for (String filename : filenames) {System.out.println(filename);}}} else {System.out.println(dir + "不是目录!");}}// 2列出一个目录及子目录下的所有文件和名称public static void listSubDirectory(File dir) {if (dir.isDirectory()) {// 判断该对象是否是目录File[] listFiles = dir.listFiles();if (listFiles != null) {for (File file : listFiles) {if (file.isFile()) {System.out.println(file);} else {listSubDirectory(file);// 是目录的话递递归调用}}}} else {System.out.println(dir + "不是目录!");}}// 3列举一个目录下的所有.java文件名称public static void listFilter(File dir, String filter) {if (dir.isDirectory()) {// 判断该对象是否是目录String[] filenames = dir.list(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {if (name.endsWith(filter)) {return true;} else {return false;}}});if (filenames != null) {for (String filename : filenames) {System.out.println(filename);}}} else {System.out.println(dir + "不是目录!");}}// 4列举一个目录及其子目录下的所有.java文件名称public static void listSubFilter(File dir, String filter) {if (dir.isDirectory()) {// 判断该对象是否是目录File[] listFiles = dir.listFiles();if (listFiles != null) {for (File file : listFiles) {if (file.isFile()) {if (file.getName().endsWith(filter)) {System.out.println(file);}} else {listSubFilter(file, filter);// 是目录的话递递归调用}}}} else {System.out.println(dir + "不是目录!");}}public static void main(String[] args) {Main.listDirectory(new File("e:/java"));System.out.println("------------------");Main.listSubDirectory(new File("e:/"));System.out.println("------------------");Main.listFilter(new File("./src"), ".java");System.out.println("------------------");Main.listSubFilter(new File("./src"), ".java");}
}

实验五 输入输出练习_JAVA相关推荐

  1. java 网络实验_Java实验五网络编程与安全

    实验五 网络编程与安全 实验准备 活动一 两人一组结对编程: 0. 参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA 1. 结对实现中缀表达式 ...

  2. 南京晓庄学院java实验五_Java实验四和实验五

    实验四 类的继承性和多态性 [开发语言及实现平台或实验环境] Windows2000 或XP,JDK1.6与Jcreator4.0 [实验目的] 1.  掌握OOP方式进行程序设计的方法, 2.  了 ...

  3. matlab实验5函数文件,实验五M文件和MATLAB设计技术总结.doc

    实验五 M文件和MATLAB程序设计 一.实验目的matlab作为一种高级计算机语言,不仅可以命令行方式完成操作,也具有数据结构.控制流.输入输出等能力,本次实验通过熟悉和掌握m文件的建立与使用方法, ...

  4. 桂 林 理 工 大 学实 验 报 告实验五 数组

    桂 林 理 工 大 学 实  验  报  告 班级 计算机类20 学号32020520 姓名  实验名称实验五 数组 日期 2020年 11月28日 一.实验目的: 熟悉掌握一维数组和二维数组的定义和 ...

  5. 计算机系统(1) 实验五 中断实验

    计算机系统(1) 实验五 中断实验 一.实验目的 二.实验背景及要求 (一)实验背景: (二)实验要求:实现三部分程序 1.用户程序: 2.键盘中断处理程序: 3.操作系统使能代码: 三.实验步骤 1 ...

  6. 北邮22信通:实验五 共射放大电路的频率特性与深负反馈的影响

    北邮22信通一枚~    很高兴以一个新身份与大家见面~ 关注作者,解锁更多邮苑模电实验报告~ 获取更多文章,请访问专栏: 北邮22信通--电子电路_青山如墨雨如画的博客-CSDN博客 目录 实验目的 ...

  7. 【程序设计与实践】实验五:停车场管理

    [程序设计与实践]实验五:停车场管理 设有一个可以停放n辆汽车的狭长停车场,它只有一个大门供车辆进出. 车辆按到达停车场时间的先后次序依次从停车场最里面向大门口处停放(即最先到达的一辆车停放在停车场的 ...

  8. 微机实验五 —— 8255A接口电路应用设计实验(基于Proteus工具)

    微机实验五 -- 8255A接口电路应用设计实验(基于Proteus工具) 复习 74LS273 74LS32 7411 8255A 一.实验题目 二.实验代码 复习 in 是读端口-(I/O) mo ...

  9. matlab程序设计基础m文件,实验五 M文件和MATLAB程序设计.doc

    实验五 M文件和MATLAB程序设计 第 PAGE \* Arabic \* MERGEFORMAT 10 页 实验五 M文件和MATLAB程序设计 一.实验目的 matlab作为一种高级计算机语言, ...

最新文章

  1. PHP 实现无限分类
  2. 介绍一下K近邻(KNN)算法,KNeighbors和RadiusNeighbors的差异是什么?各有什么优势?
  3. 微信新增“炸屎”功能,被好友玩坏了。。
  4. Spring Bean的装配(非XML文件方式)
  5. dataframe两列相乘构造新特征
  6. 关于Spring的事务Transactional,锁同步,并发线程
  7. mysql 5.7.17 源码安装_mysql5.7.17源码安装
  8. RHEL6 下Cfengine V3 安装测试1
  9. leetcode242. 有效的字母异位词
  10. python查看字符编码_python如何查看字符集
  11. android ble蓝牙接收不到数据_Android蓝牙4.0 Ble读写数据详解 -2
  12. Oracle 查看索引语句
  13. 我有机器人合体成一个大力神_变形金刚动漫人物:狂派霸天虎挖地虎合体金刚-大力神...
  14. (转) C#网速监测
  15. AR/MR技术的应用
  16. uno牌的玩法图解_UNO基本玩法和技巧
  17. ckfinder php 配置,PHP中配置Ckeditor+Ckfinder 完成图片上传
  18. The Little Schemer读书笔记1
  19. Mesh减面算法详解
  20. CentOS7 python gi模块安装

热门文章

  1. Python编程基础:第三十四节 文件移动Move a File
  2. python 权限修饰符
  3. 【机器学习算法-python实现】svm支持向量机(1)—理论知识介绍
  4. 【android-tips】SurfaceView的制作android游戏框架介绍
  5. 如何上传应用到百度应用(图解攻略)
  6. Redis 基数统计:HyperLogLog 小内存大用处
  7. Spring3中js/css/jpg/gif等静态资源无法找到(No mapping found for HTTP request with URI)问题解决--转载...
  8. 【Mysql】纯sql报表
  9. 2020年最新前端学习路线
  10. 证券一哥炼成记——郭树清