java 找出姓“张”的学生,将他们的信息写入第二个文件

来源:互联网 发布:ubuntu怎么安装tar.gz 编辑:程序博客网 时间:2024/04/29 06:46

一、需求

编写一个Java源程序,其中包含:

编写一个包含主方法main的公共类(访问权限为public的类),主方法main中完成的任务是:

(1)从键盘上输入两个文件的路径名及其文件名。

(2)从键盘上输入若干学生的信息(姓名,数学成绩,计算机成绩,各项之间用空格隔开),以finish结束,将这些学生的信息写入第一个文件。

(3)将第一个文件作为输入流的源,找出姓“张”的学生,将他们的信息写入第二个文件。

提示:将输入的每一行学生的信息作为一个字符串来处理。


二、使用类

1、File类

  • 构造方法

2、Scanner类

  • String nextLine()
    读入一行数据(可接收回车、空格)

  • String next()
    查找并返回来自此扫描器的下一个完整标记。(不可接收回车、空格)

3、FileOutputStream类

  • 构造方法 FileOutputStream(File file)
    创建一个向指定 File 对象表示的文件中写入数据的文件输出流。

  • 构造方法 FileOutputStream(File file, boolean append)
    创建一个向指定 File 对象表示的文件中写入数据的文件输出流。

  • void write(byte[] b)
    将 b.length 个字节从指定 byte 数组写入此文件输出流中。

  • void write(byte[] b, int off, int len)
    将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。

  • void write(int b)
    将指定字节写入此文件输出流。

  • void close()
    关闭此文件输入流并释放与此流有关的所有系统资源。

4、String类

  • boolean contains(CharSequence s)
    当且仅当此字符串包含指定的 char 值序列时,返回 true。

  • boolean equals(Object anObject)
    将此字符串与指定的对象比较。

5、Iterator 接口

  • boolean hasNext()
    如果仍有元素可以迭代,则返回 true。

  • E next()
    返回迭代的下一个元素。

6、Collection 接口

  • ArrayList类

  • LinkedLi类

7、缓冲流

  • BufferedReader类

  • BufferedWriter类


三、代码

public class Main{    public static void main(String[] args) throws IOException     {        Scanner in = new Scanner(System.in);        System.out.println("请输入第一个文件的路径与文件名:");        File file1 = new File(in.next());        System.out.println("请输入第二个文件的路径与文件名:");        File file2 = new File(in.next());        write(file1);        read_write(file1,file2);    }    public static void write(File file1) throws IOException    {        LinkedList<String> student = new LinkedList<String>();        Scanner in = new Scanner(System.in);        System.out.println("第一个文件存放学生的姓名,数学成绩和计算机成绩,各项之间用空格隔开。");        System.out.println("\n请向第一个文件输入内容,以finish结束:");        while(true)        {            String content = in.nextLine();            if(!"finish".equals(content))            {                student.add(content);            }            else            {                break;            }        }        Iterator<String> it = student.iterator();        FileOutputStream fileOutputStream = new FileOutputStream(file1);        while(it.hasNext())        {            byte[] b = it.next().getBytes();            fileOutputStream.write(b);                  fileOutputStream.write((int)'\n');        }        fileOutputStream.close();    }    public static void read_write(File file1,File file2) throws IOException    {        ArrayList<String> list = new ArrayList<String>();        FileReader fileReader = new FileReader(file1);        FileWriter fileWriter = new FileWriter(file2);        BufferedReader bufferedReader = new BufferedReader(fileReader);             BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);        String content = new String();        while((content = bufferedReader.readLine())!=null)        {            if(content.startsWith("张"))            {                list.add(content);            }        }        Iterator<String> it = list.iterator();        while(it.hasNext())        {            bufferedWriter.write(it.next());            bufferedWriter.write('\n');        }        bufferedWriter.close();        bufferedReader.close();        System.out.println("\n第一个文件中姓“张”的学生的信息已经存放到第二个文件,请到其存放路径查阅!");    }}

四、运行截图

这里写图片描述

查看文件:

这里写图片描述

阅读全文
0 0
原创粉丝点击