上机7 Java高级I/O流 程序设计

news/2024/12/29 3:05:29/

一、实验目的
1.了解流式输入输出的基本概念和基本原理。
2. 掌握InputStream、OutputStream抽象类的基本使用方法;
3. 掌握FileInputStream、FileOutputStream抽象类的基本使用方法。
4.掌握理解类File、FileReader、FileWriter的使用方法。
二、上机内容
1.编写程序将从键盘上输入的一行内容写入到文件copyfile.txt中,文件的保存位置自己确定。
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;

//编写程序将从键盘上输入的一行内容写入到文件copyfile.txt中,文件的保存位置自己确定。

public class Test01 {public static void main(String[] args) {Scanner scanner =new Scanner(System.in);String string = scanner.next();//将字符串转化成byte数组byte[] bytes = string.getBytes();//创建输出流FileOutputStream fileOutputStream = null;try {fileOutputStream = new FileOutputStream("C:\\Users\\JavaSE\\javase作业\\src\\javase\\上机7\\copyfile");//开始写fileOutputStream.write(bytes);//输出流最后要刷新fileOutputStream.flush();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {//关闭流try {fileOutputStream.close();} catch (IOException e) {e.printStackTrace();}}}
}

2.选择一个含有中文注释的.java文件,使用FileInputStream和FileReader分别读取文件,并把内容显示在控制台上。然后使用FileOutputStream和FileWriter将文件分别将文件复制到另一个文件copyfile1.txt和 copyfile2.txt中,文件的保存位置自己确定。
import java.io.*;

//2.选择一个含有中文注释的.java文件,使用FileInputStream和FileReader分别读取文件,并把内容显示在控制台上。
// 然后使用FileOutputStream和FileWriter将文件分别将文件复制到另一个文件copyfile1.txt和 copyfile2.txt中,文件的保存位置自己确定。

public class Test02 {public static void main(String[] args) {//先创建流FileInputStream fileInputStream = null;FileOutputStream fileOutputStream = null;try {fileInputStream = new FileInputStream("C:\\Users\\JavaSE\\javase作业\\src\\javase\\上机7\\Student.java");fileOutputStream = new FileOutputStream("C:\\Users\\JavaSE\\javase作业\\src\\javase\\上机7\\copyfile1");//边读边拷贝//准备byte数组byte[] bytes = new byte[4];int readCount = 0;while((readCount = fileInputStream.read(bytes)) != -1){System.out.print(new String(bytes,0,readCount));fileOutputStream.write(bytes);}//最后要记得刷新输出流fileOutputStream.flush();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {if (fileInputStream != null){try {fileInputStream.close();} catch (IOException e) {e.printStackTrace();}}if (fileOutputStream != null){try {fileInputStream.close();} catch (IOException e) {e.printStackTrace();}}}}
}

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

//2.选择一个含有中文注释的.java文件,使用FileInputStream和FileReader分别读取文件,并把内容显示在控制台上。
// 然后使用FileOutputStream和FileWriter将文件分别将文件复制到另一个文件copyfile1.txt和 copyfile2.txt中,文件的保存位置自己确定。

public class Test03 {public static void main(String[] args) {//先创建流FileReader fileReader = null;FileWriter fileWriter = null;try {fileReader = new FileReader("C:\\Users\\JavaSE\\javase作业\\src\\javase\\上机7\\Student.java");fileWriter = new FileWriter("C:\\Users\\JavaSE\\javase作业\\src\\javase\\上机7\\copyfile2");//准备char数组char[] chars = new char[4];int readCount = 0;//边读边写while((readCount = fileReader.read(chars)) != -1){System.out.print(new String(chars,0,readCount));fileWriter.write(chars);}//刷新fileWriter.flush();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally {if(fileReader != null){try {fileReader.close();} catch (IOException e) {e.printStackTrace();}}if (fileWriter != null){try {fileWriter.close();} catch (IOException e) {e.printStackTrace();}}}}
}

3(*).利用上机6中第3题 的Student类,创建10个相应的对象,写入到文件student2.dat中;再从文件student2.dat中读出copy到文件student3.dat中。

//利用上机6中第3题 的Student类,创建10个相应的对象,写入到文件student2.dat中;
// 再从文件student2.dat中读出copy到文件student3.dat中。import caopeng.javase.上机6.Student;
import caopeng.javase.上机6.StudentException;import java.io.*;
import java.util.ArrayList;
import java.util.List;public class Test04 {public static void main(String[] args) {Student student1 = null;Student student2 = null;Student student3 = null;Student student4 = null;Student student5 = null;Student student6 = null;Student student7 = null;Student student8 = null;Student student9 = null;Student student10 = null;//创建十个对象try {student1 = new Student(116,"钢铁侠",30,98);student2 = new Student(120,"蜘蛛侠",20,80);student3 = new Student(111,"美国队长",60,95);student4 = new Student(112,"雷神",999,85);student5 = new Student(115,"绿巨人",20,60);student6 = new Student(114,"黑寡妇",20,90);student7 = new Student(117,"鹰眼",20,85);student8 = new Student(113,"绯红女巫",20,85);student9 = new Student(119,"星爵",20,59);student10 = new Student(118,"奇异博士",20,100);} catch (StudentException e) {e.printStackTrace();}//一次序列化多个对象,需要集合List<Student> arrayList = new ArrayList<>();arrayList.add(student1);arrayList.add(student2);arrayList.add(student3);arrayList.add(student4);arrayList.add(student5);arrayList.add(student6);arrayList.add(student7);arrayList.add(student8);arrayList.add(student9);arrayList.add(student10);//创建流ObjectOutputStream objectOutputStream = null;ObjectInputStream objectInputStream = null;try {objectOutputStream = new ObjectOutputStream(new FileOutputStream("C:\\Users\\JavaSE\\javase作业\\src\\javase\\上机7\\student2.dat"));objectOutputStream.writeObject(arrayList);//刷新流objectOutputStream.flush();objectInputStream = new ObjectInputStream(new FileInputStream("C:\\Users\\JavaSE\\javase作业\\src\\javase\\上机7\\student2.dat"));//从dat文件中输出对象List<Student> list = (List<Student>) objectInputStream.readObject();for (Object object : list){System.out.println(object);}//从读出来的copy到student3.dat中objectOutputStream = new ObjectOutputStream(new FileOutputStream("C:\\Users\\JavaSE\\javase作业\\src\\javase\\上机7\\student3.dat"));objectOutputStream.writeObject(list);} catch (IOException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();} finally {if (objectOutputStream != null){try {objectOutputStream.close();} catch (IOException e) {e.printStackTrace();}}if (objectInputStream != null){try {objectInputStream.close();} catch (IOException e) {}}}}
}

http://www.ppmy.cn/news/195706.html

相关文章

【unity小技巧】使用贝塞尔曲线实现导弹随机攻击敌人,也可以用于拾取物品

文章目录 先看效果代码实现1.导弹代码2.玩家生成导弹代码3.玩家挂载代码4.导弹挂载代码先看效果 代码实现 1.导弹代码 记得配置敌人为enemy标签 using System.Collections; using System.Collections.Generic; using

魅蓝note6900e

为什么我的魅蓝note6进不了9008只能进900e?

魅蓝e android版本,魅蓝E的安卓7.0来了!魅蓝E2却看哭了

原标题&#xff1a;魅蓝E的安卓7.0来了&#xff01;魅蓝E2却看哭了 今年7月初&#xff0c;魅族正式启动基于安卓7.0的Flyme内测&#xff0c;首批参与适配的机型有魅族Pro 6 Plus、Pro 6、 Pro 6s、 Pro 5、 MX6&#xff0c;以及魅蓝 Note5 、Note3 、魅蓝E 、 魅蓝Max 等。 很幸…

6、C语言函数

函数的声明与定义 函数的分类与调用 递归调用 #include <stdio.h> //递归实现n的阶乘 int f(int n){//一定要有结束条件&#xff0c;一定是在return之前if(1 n) {return 1;}return n*f(n-1);//写公式 } int main() {int n;scanf("%d", &n);printf("%…

魅蓝note5android版本怎么升级,魅蓝Note 5升级版将至?多达三款型号

【TechWeb报道】眼看着最近国产友商接二连三开始推出新款手机&#xff0c;魅族也按耐不住开始筹备自家新款手机相关工作&#xff0c;比如最近有一款代号为M621C-S的魅族新款手机获得了工信部电信设备认证中心的认证&#xff0c;当然工信部还像往常那样附带有真机图。 从该机外观…

魅蓝Note 5已可刷Flyme 6 就是流畅!

对于魅蓝Note 5不少魅友已经非常的熟悉了&#xff0c;该机于2016年12月初发布&#xff0c;正式开售之后无论是线上还是线下都短时间内就迅速售罄&#xff0c;成为了2016年年底最受消费者欢迎的千元内精品手机。该机除了颜值出色做工精致外&#xff0c;最大的特点就是续航给力&a…

魅蓝s6 android系统版本,魅蓝s6处理器相当于骁龙多少-与非网

硬件型号&#xff1a;魅族S6 系统版本&#xff1a;Android8.0 魅蓝s6处理器相当于骁龙625,高通骁龙625处理器&#xff0c;采用A53八核心设计&#xff0c;其单核频率最高可达2.0GHz&#xff0c;14nm FinFET制程&#xff0c;而GPU部分则是Adreno 506。最高支持2400万像素摄像头&a…

Flyme 6将于30日公测 魅蓝Note5有望率先尝鲜

经过一个月的内测&#xff0c;号称更智能、更强大、更安全的 Flyme 6终于要在12月30日迎来公测。这次Flyme 6 将适配的机型多达 20 余款&#xff0c;是 Flyme 升级史上最大规模的一次机型覆盖。其中&#xff0c;Flyme 6的首批适配机型有刚刚发布的千元神机魅蓝Note5。 值得一提…