2015-04-28 2 views
0

Я просто хочу, чтобы кто-то прокомментировал этот код для меня, чтобы понять, что делает код, это прекрасно, но я не понимаю. Я знаю, что на этом сайте есть профессиональные кодеры, и до сих пор я не знаю, как отлаживать.Ввод данных и выход Сериализация

пожалуйста, просто комментируя это, заставьте меня понять шаг за шагом, что он делает.

import java.io.EOFException; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream; 
import java.util.ArrayList; 

public class Serialization { 
public static void main(String[] args) throws FileNotFoundException, IOException,ClassNotFoundException { 
    File file = new File("students.txt"); 
    ArrayList<Student> psy101 = new ArrayList<Student>(); 

    psy101.add (new Student("Bob", 2.9)); 
    psy101.add(new Student("Smith", 3.9)); 
    psy101.add(new Student("John",4.9)); 
    psy101.add(new Student("Amy",10.9)); 


    FileOutputStream fo = new FileOutputStream(file); 
    ObjectOutputStream output = new ObjectOutputStream(fo); 

    for(Student s : psy101){ 
    output.writeObject(s); 


} 
output.close(); 
fo.close(); 


FileInputStream fi = new FileInputStream(file); 
ObjectInputStream input = new ObjectInputStream(fi); 
ArrayList<Student> psy1012 = new ArrayList<Student>(); 
try{ 
while (true){ 
    Student s = (Student)input.readObject(); 
    psy1012.add(s); 
} 
}catch (EOFException ex){ 

} 
for (Student s : psy1012){ 
    System.out.println(s); 
} 

, а другой класс - этот, любые комментарии будут оценены.

import java.io.Serializable; 

public class Student implements Serializable { 
private String Name; 
private double GPA; 

public Student(String name, double gpa){ 
    this.Name = name; 
    this.GPA = gpa; 

} 

public String getName() { 
    return this.Name; 
} 

public String getName(String newName) { 
    return(this.Name = newName); 
} 

public double getGPA() { 
    return this.GPA; 
} 

public double setGPA(double newgGPA) { 
    return (this.GPA = GPA); 
} 
@Override 
    public String toString() { 
     // TODO Auto-generated method stub 
     return String.format("%s\t%f",this.Name,this.GPA); 
    } 
} 
+0

Какая IDE вы используете? У большинства есть отладчики, где вы можете видеть, что все происходит отлично. – runDOSrun

+0

Я использую Eclipse, и на самом деле я не знаю, как отлаживать, это мое самое большое беспокойство и нет видео онлайн при отладке. –

+0

Или бы вы предложили мне, как кто-то должен отлаживать? может быть, это поможет мне. –

ответ

0

Во-первых, я могу видеть, что у вас есть два класса,

первый класс для сериализации и второй для студента. Теперь я не могу комментировать строку в строке, но я буду предлагать некоторую информацию, чтобы вы могли больше узнать о ней.

https://docs.oracle.com/javase/tutorial/essential/io/

Запись в текстовый файл

Для ввода текста в файл, вы открываете выходной поток с помощью класса FileWriter. Если файл не существует, создается новый пустой файл с этим именем. Если файл уже существует, он удаляет данные в файле. Если вы хотите добавить к файлу, используйте следующий параметр при создании объекта FileWriter:

FileWriter fWriter = new FileWriter (outFile, true); Класс PrintWriter имеет методы print(), printf() и println(), которые позволят нам записать в файл.

Это также поможет вам. http://www.cs.utexas.edu/~mitra/csSummer2009/cs303/lectures/fileIO.html

Теперь я верю, как только вы запустите ваш код, вы заметите, что students.txt будет иметь информацию в коде и консоли, однако он будет сериализовать, Java предоставляет механизм, называемый сериализации объектов, где объект может быть представлена ​​в виде последовательности байтов, которая включает в себя данные объекта, а также информацию о типе объекта и типах данных, хранящихся в объекте.

После того, как сериализованный объект был записан в файл, он может быть прочитан из файла и десериализован, то есть информация о типе и байты, которые представляют объект и его данные, могут использоваться для воссоздания объекта в памяти.

Самое впечатляющее, что весь процесс независим от JVM, что означает, что объект может быть сериализован на одной платформе и десериализован на совершенно другой платформе. Поэтому читайте больше об этом, и это должно помочь.

+0

Я прочитаю это и многое другое. –

+0

важно использовать видео, приведенное выше. –

Смежные вопросы