JAVA 集合类与输入流问题
我是个学生有道作业,写不明白了我想把含有int,double,String的一个Student类(实例化后)的数据写入到一个ArrayList(抛开线程不安全问题),然后...
我是个学生
有道作业,写不明白了
我想把含有int,double,String的一个Student类(实例化后)的数据写入到一个ArrayList(抛开线程不安全问题),然后用写流持久化到某个盘符下的某个文件内,但是当我用读流读这个文件时,输出却是哈希码(强制转换成Student后),老师说用toString方法,我没弄明白,大家帮帮忙
作业是也一个仿SQL的应用程序,我们现在还在用JCreter,那个输入类下的方法应该写在查询类中的,把已经持续化后的文件读出来,但输出的是这个如图
package studentDemo;
import java.io.*;
class InDemo
{
public static void main(String args[])throws IOException,ClassNotFoundException
{
FileInputStream fis=new FileInputStream("d://student.out");
ObjectInputStream ois=new ObjectInputStream(fis);
//ois就是所创建的对象的输入流用来读取持久化到文件当中的对象
String s=(String)ois.readObject();
//readObject这个方法用来读取对象,下溯造型的目的是恢复对象原有的状态
System.out.println (s.toString());
ois.close();
fis.close();
}
}
package studentDemo;
import java.io.*;
import java.util.*;
class UseMain
{
public static void main(String args[])throws IOException
{
Add add=new Add();
add.Add(Integer.parseInt(args[0]),args[1],Integer.parseInt(args[2]),
Double.valueOf(args[3]));
}
} 展开
有道作业,写不明白了
我想把含有int,double,String的一个Student类(实例化后)的数据写入到一个ArrayList(抛开线程不安全问题),然后用写流持久化到某个盘符下的某个文件内,但是当我用读流读这个文件时,输出却是哈希码(强制转换成Student后),老师说用toString方法,我没弄明白,大家帮帮忙
作业是也一个仿SQL的应用程序,我们现在还在用JCreter,那个输入类下的方法应该写在查询类中的,把已经持续化后的文件读出来,但输出的是这个如图
package studentDemo;
import java.io.*;
class InDemo
{
public static void main(String args[])throws IOException,ClassNotFoundException
{
FileInputStream fis=new FileInputStream("d://student.out");
ObjectInputStream ois=new ObjectInputStream(fis);
//ois就是所创建的对象的输入流用来读取持久化到文件当中的对象
String s=(String)ois.readObject();
//readObject这个方法用来读取对象,下溯造型的目的是恢复对象原有的状态
System.out.println (s.toString());
ois.close();
fis.close();
}
}
package studentDemo;
import java.io.*;
import java.util.*;
class UseMain
{
public static void main(String args[])throws IOException
{
Add add=new Add();
add.Add(Integer.parseInt(args[0]),args[1],Integer.parseInt(args[2]),
Double.valueOf(args[3]));
}
} 展开
2个回答
展开全部
你能不能把你写的程序贴一下??我大致写了一个将Object输入到文件之后再从文件读出的程序没有出现你的问题。
程序如下:
import java.io.*;
import java.util.ArrayList;
public class Test {
private static File f= new File("/home/kse/test.txt");
public static void main(String[] args){
ArrayList<Student> al = new ArrayList<Student>();
Student s = new Student("aaaa",20);
al.add(s);
froze(al,f);
ArrayList<Student> al2=(ArrayList<Student>)refresh(f);
Student s2 = al2.get(0);
System.out.println(s2.age);
System.out.println(s2.name);
}
private static void froze(Object o,File ff){
try{
FileOutputStream fos = new FileOutputStream(ff);
ObjectOutputStream out = new ObjectOutputStream(fos);
out.writeObject(o);
out.flush();
out.close();
}catch (Exception e){
e.printStackTrace();
}
}
private static Object refresh(File ff){
Object o = new Object();
try{
FileInputStream fis = new FileInputStream(ff);
ObjectInputStream in = new ObjectInputStream(fis);
o=in.readObject();
in.close();
}catch(Exception e){
e.printStackTrace();
}
return o;
}
}
class Student implements Serializable{
String name;
int age;
Student(String name,int age){
this.name=name;
this.age=age;
}
}
-----------------------------------------
嗯~你需要重写toString()方法。比如
public String toString(){
return name + " " + age;
}
类似很简单的方法就可以。
程序如下:
import java.io.*;
import java.util.ArrayList;
public class Test {
private static File f= new File("/home/kse/test.txt");
public static void main(String[] args){
ArrayList<Student> al = new ArrayList<Student>();
Student s = new Student("aaaa",20);
al.add(s);
froze(al,f);
ArrayList<Student> al2=(ArrayList<Student>)refresh(f);
Student s2 = al2.get(0);
System.out.println(s2.age);
System.out.println(s2.name);
}
private static void froze(Object o,File ff){
try{
FileOutputStream fos = new FileOutputStream(ff);
ObjectOutputStream out = new ObjectOutputStream(fos);
out.writeObject(o);
out.flush();
out.close();
}catch (Exception e){
e.printStackTrace();
}
}
private static Object refresh(File ff){
Object o = new Object();
try{
FileInputStream fis = new FileInputStream(ff);
ObjectInputStream in = new ObjectInputStream(fis);
o=in.readObject();
in.close();
}catch(Exception e){
e.printStackTrace();
}
return o;
}
}
class Student implements Serializable{
String name;
int age;
Student(String name,int age){
this.name=name;
this.age=age;
}
}
-----------------------------------------
嗯~你需要重写toString()方法。比如
public String toString(){
return name + " " + age;
}
类似很简单的方法就可以。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询