IO和对象序列化题

IO和对象序列化题,第1张

1.如在E盘下有一个Test.txt文本文件内容是

#刘德华#89#77#60

#张信哲#76#97#70

#周杰伦#89#88#90

#随便啦#87#70#80

要求通过java读取文本并把文本中的每一行后面的三个成绩相加,

最后按从大到小的顺序输出到另一个文本文件中.

输出后的文本文件内容应为:

#周杰伦#267

#张信哲#243

#随便啦#237

#刘德华#226


package hw.T01;

import java.io.*;
import java.util.*;

public class Demo {
      public static void main(String[] args) throws IOException {
          TreeMap map= new TreeMap<>(new Comparator() {
              @Override
              public int compare(Integer o1, Integer o2) {
                  return o2-o1;
              }
          });
          BufferedReader bufferedReader = new BufferedReader(new FileReader("D:\\javatest\\day0411\\test.txt"));
          String line;
          while ((line=bufferedReader.readLine())!=null){
              String[] split = line.split("#");
              int score = Integer.valueOf(split[2]) + Integer.valueOf(split[3]) + Integer.valueOf(split[4]);
              map.put(score, split[1]);
          }
          BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("text1.txt"));
          Set number1s = map.keySet();
          for (Integer number1 : number1s) {
              String s = map.get(number1);
              StringBuffer stringBuffer = new StringBuffer();
              stringBuffer.append("#").append(s).append("#").append(number1);
              bufferedWriter.write(String.valueOf(stringBuffer));
              bufferedWriter.newLine();
          }
          bufferedWriter.close();
          bufferedReader.close();
      }

}

2.交易明细文件内容如下例:log.txt

#姓名 性别 帐号 发生额

刘德华|1|4155990188888888|300.00

晓龙|1|1155990199999999|500.00

黄晓明|1|4155990100000000|1000.50

张东健|1|4155990155555555|600.99

梁朝伟|0|4155990111111111|5000.00

刘德华|1|4155990188888888|200.00

张东健|1|4155990155555555|500.99

刘德华|1|4155880188888888|1200.00

PS:1)一行是一条交易明细,每行分4列,列间用|分隔。#为注释符号。

2)TransRecord存储一条明细。

实现功能:

一个人可能消费有多笔。(当姓名和账号相同的话就认为是同一人)

统计每个人的消费总额。

按消费额的金额升序排序。

要求显示每个人的姓名、性别、帐号、消费总额的信息

package hw.T02;

import java.io.*;
import java.util.*;

public class Dmeo {
    public static void main(String[] args) throws IOException {
            BufferedReader bufferedReader = new BufferedReader(new FileReader("log.txt"));

            ArrayList list = new ArrayList<>();
            String len;
            String s = bufferedReader.readLine();//把最上面一行读取出来,备用。
        while ((len = bufferedReader.readLine()) != null) {
                String[] split = len.split("\\|");
                TransRecord transRecord = new TransRecord(split[0], Integer.parseInt(split[1]), (int) Long.parseLong(split[2]), Double.parseDouble(split[3]));
                    boolean i=true;
                    for (TransRecord list1 : list) {
                        if (list1.getBand() == transRecord.getBand() && list1.getName().equals(transRecord.getName())) {
                            list1.setBand(list1.getBand() + transRecord.getBand());
                            i=false;
                        }
                        if(i) {
                            list.add(transRecord);
                        }
                    }
                }

                BufferedWriter writer = new BufferedWriter(new FileWriter("log1.txt"));
                writer.write(s);
                writer.newLine();
                for (TransRecord list1 : list) {
                    writer.write(list1.toString());
                    writer.newLine();
                }
                writer.close();
        bufferedReader.close();
            }
    }
package hw.T02;

public class TransRecord {
    private String name;
    private int sex;
    private int band;
    private double money;

    @Override
    public String toString() {
        return "TransRecord{" +
                "name='" + name + '\'' +
                ", sex=" + sex +
                ", band=" + band +
                ", money=" + money +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getSex() {
        return sex;
    }

    public void setSex(int sex) {
        this.sex = sex;
    }

    public int getBand() {
        return band;
    }

    public void setBand(int band) {
        this.band = band;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }

    public TransRecord(String name, int sex, int band, double money) {
        this.name = name;
        this.sex = sex;
        this.band = band;
        this.money = money;
    }
}

  1. 按要求完成程序功能。将三个型数;写入到文件中,然后再读取出来。

将int  i=3; int j=4;int k=5;写入到文件中,然后再读取出来并求出三个数的平均值。

    要求:

  1. 创建数据文件对象(5分)
  2. 定义基本数据(5分)
  3. 写入数据(15分)
  4. 读取数据(15分)
  5. 求出三个数的平均值。(5分)
  6. 关闭流(5分)
1.	package hw.T03;

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

public class Demo {
      public static void main(String[] args) throws IOException {
          FileWriter fileWriter = new FileWriter("9.txt");
         int i=3;
         int j=4;
         int k=5;
          fileWriter.write(i);
          fileWriter.write(j);
          fileWriter.write(k);
          fileWriter.close();
          FileReader fileReader = new FileReader("9.txt");
          int read = fileReader.read();
          int read1 = fileReader.read();
          int read2 = fileReader.read();
          System.out.println((read+read1+read2)/3);
          fileReader.close();

      }
}
2.	
  1. 按要求完成程序功能。

创建一个学生类,属性:姓名,年龄。将学生对象写入到文件中,然后再读取出来。

    要求:

  1. 正确创建定数文件流对象(10分)
  2. 创建对象流(10分)
  3. 正确创建学生对象(5分)
  4. 将学生对象写入文件(10分)
  5. 从文件中读取学生对象,并输出信息。(10分)
  6. 关闭数据流资源(5分)
7、	package hw.T04;

import java.io.Serializable;

public class Student implements Serializable {
    private static final long serialVersionUID = -396340593907191557L;
    private String name;
    private int age;

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

 

	package hw.T04;

import java.io.*;

public class Dmeo {
      public static void main1(String[] args) throws IOException {
          ObjectOutputStream OutputStream = new ObjectOutputStream(new FileOutputStream("10.txt"));
          Student student1= new Student("张三", 21);
          Student student2 = new Student("张四", 22);
          OutputStream.writeObject(student1);
          OutputStream.writeObject(student2);
        OutputStream.close();
      }
        public static void main(String[] args) throws IOException, ClassNotFoundException {
            ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("10.txt"));
            Object o1 = objectInputStream.readObject();
            Object o2 = objectInputStream.readObject();
            System.out.println(o1);
            System.out.println(o2);
            objectInputStream.close();
        }
}

 1. 在文本文件中存有斐波那契数列(每一位置的值等于前面两位连续位置数值相加),1,1,2,3,5,8,13,21,34,55,读取第12个数

	package hw.T05;

import java.io.*;

public class Demo {
      public static void main(String[] args) throws IOException {
          BufferedReader bufferedReader = new BufferedReader(new FileReader("11.txt"));
          String s = bufferedReader.readLine();
          String[] split = s.split(",");
          System.out.println(split[11]);
          bufferedReader.close();
      }
}

 2. 将一个文件中的内容复制到另一个文件中(可包含中文)

package hw.T06;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Dmeo {
    public static void main(String[] args) throws IOException {
        FileInputStream fileInputStream = new FileInputStream("12.txt");
        FileOutputStream fileOutputStream = new FileOutputStream("13.txt");
        int len;
        byte[] bytes = new byte[10];
        while ((len = fileInputStream.read(bytes)) != -1) {
            fileOutputStream.write(bytes, 0, len);
        }
        fileInputStream.close();
        fileOutputStream.close();
    }
}

3将一个文件夹中的内容复制到其它目录中。(比如:D:\chenhao中的内容复制一份到 e:\zhangsan文件夹中)

(递归和通过字节流来进行复制FileInputStreamFileOutputStream)

package homework;

import java.io.*;

public class TestDir {
    public static void main(String[] args) throws IOException {
        File file1 = new File("D:\chenhao");
        File file2 = new File("D:\zhangsan");
        copyDir(file1,file2);
    }

    private static void copyDir(File file1, File file2) throws IOException {
        File[] files = file1.listFiles();
        for (File file : files) {
            //是文件
            if (file.isFile()){
                File file3 = new File(file2.getAbsolutePath() + "\" + file.getName());
                file3.createNewFile();
                FileInputStream fileInputStream= new FileInputStream(file);
                FileOutputStream fileOutputStream = new FileOutputStream(file3);
                int len;
                byte[] bytes=new byte[1024];
                while ((len=fileInputStream.read(bytes))!=-1){
                    fileOutputStream.write(bytes,0,len);
                }
                fileInputStream.close();
                fileOutputStream.close();
            }
            //是目录
            else {
                File file3 = new File(file2.getAbsolutePath() + "\" + file.getName());
                file3.mkdir();
                //file是chenhao子目录。file3是新建的目录
                copyDir(file,file3);
            }
        }
    }
}

6. 复制一个MP3文件

要求:将D盘根目录下的src.mp3文件复制到同一目录下并命名为des.mp3 

package homework;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class TestMp3 {
    public static void main(String[] args) throws IOException {
        File file1 = new File("D:\2022maxue\src.mp3");
        File file2 = new File(file1.getParent()+"\des.mp3");
        file2.createNewFile();
        FileInputStream inputStream = new FileInputStream(file1);
        FileOutputStream outputStream = new FileOutputStream(file2);
        int len;
        byte[] bytes = new byte[1024];
        while ((len=inputStream.read(bytes))!=-1){
            outputStream.write(bytes,0,len);
        }
        inputStream.close();
        outputStream.close();
    }
}

7. 使用缓冲流实现文件的复制。

package homework;

import java.io.*;

public class TestBuffered {
    public static void main(String[] args) throws IOException {
        BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream("copy.txt"));
        BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream("copy1.txt"));
        int len;
        byte[] bytes = new byte[1024];
        while ((len=inputStream.read(bytes))!=-1){
            outputStream.write(bytes,0,len);
        }
        inputStream.close();
        outputStream.close();
    }
}

8获取一个文件夹下所有指定后缀名(.java)的文件(包括子文件夹中的内容),并将这些文件的绝对路径写入到一个文本文件中

package homework;

import java.io.*;

public class TestJavaName {
    public static void main(String[] args) throws IOException {
        File file = new File("D:\2022maxue\JAVA\javalearn");
        printName(file);
    }

    private static void printName(File file) throws IOException {
        FileOutputStream outputStream = new FileOutputStream("D:\2022maxue\JAVA\javalearn.txt", true);
        File[] files = file.listFiles();
        for (File file1 : files) {
            if (file1.isFile()){
                if (file1.getName().endsWith(".java")){
                    outputStream.write((file1.getAbsolutePath()+"\r\n").getBytes());
                }
            }
            else {
                printName(file1);
            }
        }
        outputStream.close();
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/736233.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存