JAVA第09次实验(IO流)

JAVA第09次实验(IO流)

0.字节流与二进制文件

我的代码</span.


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

class Student {
       private int id;
       private String name;
       private int age;
       private double grade;    
       public Student(){
           
       }
       public Student(int id, String name, int age, double grade) {
          this.id = id;
          this.setName(name);
          this.setAge(age);
          this.setGrade(grade);
      }
      public int getId() {
          return id;
      }
      public void setId(int id) {
          this.id = id;
      }
      public String getName() {
          return name;
      }
      public void setName(String name) {
          if (name.length()>10){
              throw new IllegalArgumentException("name's length should <=10 "+name.length());
          }
          this.name = name;
      }
      public int getAge() {
          return age;
      }
      public void setAge(int age) {
          if (age<=0){
              throw new IllegalArgumentException("age should >0 "+age);
          }
          this.age = age;
      }
      public double getGrade() {
          return grade;
      }
      public void setGrade(double grade) {
          if (grade<0 || grade >100){
              throw new IllegalArgumentException("grade should be in [0,100] "+grade);
          }
          this.grade = grade;
      }
      @Override
      public String toString() {
          return "Student [id=" + id + ", name=" + name + ", age=" + age + ", grade=" + grade + "]";
      }
      
  }
   public class Main {
          public static void main(String[] args)
          {
              
              String fileName="f:\\student.txt";
              try(DataOutputStream dos=new DataOutputStream(new FileOutputStream(fileName)))
              {
                  Student[] stu=new Student[3];
                  stu[0]=new Student(1,"zhangsan",19,65.0);
                  stu[1]=new Student(2,"lisi",19,75.0);
                  stu[2]=new Student(3,"wangwu",20,85.0);
                  for(Student stu1:stu) {
                      dos.writeInt(stu1.getId());
                      dos.writeUTF(stu1.getName());
                      dos.writeInt(stu1.getAge());
                      dos.writeDouble(stu1.getGrade());
                  }
                  
              } catch (FileNotFoundException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
                  System.out.println("1");
              } catch (IOException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
                  System.out.println("2");
              }
              try(DataInputStream dis=new DataInputStream(new FileInputStream(fileName)))
              {
                  while(dis!=null) {
                      int id=dis.readInt();
                      String name=dis.readUTF();
                      int age=dis.readInt();
                      double grade=dis.readDouble();
                      Student stu=new Student(id,name,age,grade);
                      System.out.println(stu);
                  }
                  
                  
              } catch (FileNotFoundException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
                  System.out.println("3");
              } catch (IOException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
                 System.out.println("4");
             }
          }  
        }

我的总结</span.

1.字符流与文本文件:使用PrintWriter(写),BufferedReader(读)

  • (1)
    我的代码</span.
public class Main {
        public static void main(String[] args) throws IOException
        {
            String FileName="D:\\TSBrowserDownloads\\Students.txt";
            BufferedReader br = null;
            try {
                br = new BufferedReader(new InputStreamReader(new FileInputStream(FileName),"UTF-8"));
                String line = null;
                while((line=br.readLine())!=null)
                    System.out.println(line);
            } finally{
                if (br!=null){
                    br.close();
                }
            }
        }

    }

我的总结</span.

 直接打开会出现乱码,所以在读取前要把模式改为“UTF-8”;
  • (2)
    我的代码</span
public static void ListreadStudents(String fileName){
            ArrayList<Student> StudentList=new ArrayList<Student>();
            BufferedReader br = null;
            try {
                br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName),"UTF-8"));
                while(br!=null) {
                    String line=br.readLine();
                    String[] stu=line.split("\\s+");
                    int id=Integer.parseInt(stu[0]);
                    String name=stu[1];
                    int age=Integer.parseInt(stu[2]);
                    double grade=Double.parseDouble(stu[3]);
                    Student Stu=new Student(id,name,age,grade);
                    StudentList.add(Stu);          
                }                
            } finally{
                if (br!=null){
                    br.close();
                }
            }
}
  • (3)
    我的代码</span.
String FileName="D:\\TSBrowserDownloads\\Students.txt";
            PrintWriter pw=new PrintWriter(new OutputStreamWriter(new FileOutputStream(FileName,true),"UTF-8"));
            pw.print("4 陈六 21 93");
            pw.close();

猜你喜欢

转载自www.cnblogs.com/Gejkdj/p/11938994.html