首先,在src文件夹下新建一个images文件夹
在src文件夹下放入一张 名为Maize.jpg的图片
执行代码,可见images文件夹下已出现复制过来的Maize.jpg
同时我们也看到生成了tickler.txt备忘录文件,
所以显示记事本文件已读取,内容为: 记得每天吃早餐!
接着我们输入5个学生的名字:
可见学生信息列表已读出相应名字,随机点名器也随机点名出一位同学的名字
而且还单独添加了一位同学的信息:lxh
接下来分别添加hrh、lgh、mzj的信息
最后学生信息列表读出最终的所有名字
代码
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
public class TestIO{
public static void main(String[] args) throws IOException, ClassNotFoundException {
//上传图片到当前项目中(使用字节缓冲输入输出流)
//创建文件输入流对象
FileInputStream fis = new FileInputStream("src\\Maize.jpg");
//创建文件输出流对象
FileOutputStream fos = new FileOutputStream("src\\images\\Maize.jpg");
//将创建的节点流的对象作为形参传递给缓冲流的构造方法
BufferedInputStream bis=new BufferedInputStream(fis);
BufferedOutputStream bos=new BufferedOutputStream(fos);
int len; //定义len,记录每次读取的字节
//复制文件前的系统时间
long begin = System.currentTimeMillis();
//读取文件并判断是否到达文件末尾
while ((len= fis.read())!=-1){
bos.write(len); //从第1个字节开始,向文件写入len个字节
}
//复制文件后的系统时间
long end = System.currentTimeMillis();
System.out.println(" 复制文件耗时: "+(end-begin)+"毫秒");
bos.close();
bis.close();
//上传一个记事本文件到当前项目中(使用字符文件输入输出流)。
File file = new File("tickler.txt");
FileWriter fw=new FileWriter(file);
fw.write("记得每天吃早餐!");
fw.close();
File file1=new File("tickler.txt");
FileReader fr=new FileReader(file1);
int len1; //定义len,记录读取的字符
//判断是否读取到文件的末尾
System.out.print("记事本文件已读取,内容为: ");
while((len1= fr.read())!=-1){
//输出文件内容
System.out.print((char)len1);
}
fr.close();
//添加5个学生的姓名到name.txt文件中(使用集合的方式用字符缓冲输入输出流)
FileWriter fw1=new FileWriter("src/name.txt");
BufferedWriter bw=new BufferedWriter(fw1);
System.out.println("\n请输入5个学生的名字:");
Scanner scanner1=new Scanner(System.in);
List nameList=new ArrayList();
//每次读取一行文本,判断是否到文件末尾
for(int i=1;i<=5;i++){
String name=scanner1.nextLine();
nameList.add(name);
}
for(int j=0;j<=4;j++){
bw.write((String) nameList.get(j));
//写入一个换行符,该方法会根据不同操作系统生成相应换行符
bw.newLine();
}
bw.close(); //释放资源
String str;
FileReader fr1=new FileReader("src/name.txt"); //创建字符缓冲输入流对象
BufferedReader br=new BufferedReader(fr1);
System.out.println("\n-----------学生信息列表------------");
while((str=br.readLine())!=null) {
System.out.println(str);
}
br.close();
//点名器:在第3个实验中生成一个name.txt文件,里面存储了班级同学的姓名,每个姓名占一行,要求通过程序实现随机点名器。
String str2;
FileReader fr2=new FileReader("src/name.txt");
List nameList2=new ArrayList(); //创建ArrayList集合对象
BufferedReader br2=new BufferedReader(fr2); //创建字符缓冲输入流对象
while((str2=br2.readLine())!=null) { //通过字符缓冲输入流对象的方法读数据,每读一个名字(一行数据)数据作为集合元素存储到集合中。
nameList2.add(str2);
}
br2.close(); //释放资源
System.out.print("随机点名器:");
Random random=new Random(); //使用Random产生一个随机数
int count=random.nextInt(nameList2.size()); //随机数范围为【0,集合的长度)
System.out.println(nameList2.get(count)); //随机数作为索引获取集合的元素并输出
//添加一个用户信息到文件(使用对象输出输入流)
Student student1=new Student("lxh");
nameList.add(student1.getName());
//创建文件输出流对象,将数据写入name.txt文件
FileOutputStream fos1=new FileOutputStream("src/name.txt");
//创建对象输出流对象
ObjectOutputStream oos=new ObjectOutputStream(fos1);
oos.writeObject(student1); //将s对象序列化
FileInputStream fis1=new FileInputStream("src/name.txt");
ObjectInputStream ois=new ObjectInputStream(fis1);
//从student.txt文件中读取数据
Student student2=(Student)ois.readObject();
System.out.println("已添加学生:"+student2.getName());
//添加多个用户信息到文件(采用集合并使用对象输出输入流)
System.out.print("请输入添加的学生信息的数量:");
int number=scanner1.nextInt();
System.out.println("请输入学生名字:");
List nameList1=new ArrayList();
//每次读取一行文本,判断是否到文件末尾
for(int i=0;i<=number;i++){
String name1=scanner1.nextLine();
nameList1.add(name1);
}
for(int i=1;i<nameList1.size();i++){
Student student3=new Student((String) nameList1.get(i));
//===================创建文件输出流对象=================将数据写入name.txt文件
FileOutputStream fos2=new FileOutputStream("src/name.txt");
//创建对象输出流对象
ObjectOutputStream oos1=new ObjectOutputStream(fos2);
oos1.writeObject(student3); //将s对象序列化
//===================创建文件输入流对象==================
FileInputStream fis2=new FileInputStream("src/name.txt");
ObjectInputStream ois1=new ObjectInputStream(fis2);
//从name.txt文件中读取数据
Student student4=(Student)ois1.readObject();
nameList.add(student4.getName());
System.out.println("已添加学生:"+student4.getName());
}
System.out.println("\n-----------学生信息列表------------");
for(int u=0;u<nameList.size();u++){
System.out.println(nameList.get(u));
}
}
}
class Student implements Serializable{
private String name;
public Student(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}