java关于数据的存放和读取_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java关于数据的存放和读取

java关于数据的存放和读取

 2014/5/25 21:19:09  Y_1746119035  程序员俱乐部  我要评论(0)
  • 摘要:在原始数据流中可以用其本身的方法方便的将对象stu的基本数据类型保存和读取。但是对于字符串string,写入文件的时候只有一个writeChars(Strings)方法,而且这个方法是将一个字符串分解成一个个的字符写入文件,这样在读取的时候便不能直接读出字符串了。我想到的方法是在保存对象stu的时候,一遇到字符串型的属性,便先保存一个byte,这个byte中存放之后要保存的字符串中字符的个数,这样的话在读取的时候我们先读取出了字符串的个数
  • 标签:Java 数据
   在原始数据流中可以用其本身的方法方便的将对象stu的基本数据类型保存和读取。
   但是对于字符串string,写入文件的时候只有一个writeChars(String s)方法,而且这个方法是将一个字符串分解成一个个的字符写入文件,这样在读取的时候便不能直接读出字符串了。
   我想到的方法是在保存对象stu的时候,一遇到字符串型的属性,便先保存一个byte,这个byte中存放之后要保存的字符串中字符的个数,这样的话在读取的时候我们先读取出了字符串的个数,就可以再后面的读取中用一个for循环将这一个字符串中的字符挨个读取,并且将他们拼接起来,还原成一个字符串。
    这样就可以做到保存和读取一个含有字符串属性的对象了
    以下是代码:

学生类:Student.java

package NE524;

public class Student {
public Student(String name,byte age,float score,String disc) {
this.name = name;
this.age = age;
this.score = score;
this.disc = disc;
}
String name;
byte age;
float score;
String disc;
}

学生操作类:StudentOption.java


package NE524;

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

public class StudentOption {
/**
* 主函数
* @param args
*/
public static void main(String[] args) {
File f = new File("E:\\11\\11\\c.txt");
Student stu = new Student("张三",(byte)10,60.0f,"小学生");
StudentOption so = new StudentOption();
so.saveStudent(f, stu);//将stu这个对象保存在文件f中
so.readStudent(f);//将保存在文件f中的对象stu读取出来
}
/**
* 将一个对象保存在一个文件中
* @param f 保存对象的文件
* @param stu 要保存的对象
*/
public void saveStudent(File f,Student stu){
try {
FileOutputStream fos = new FileOutputStream(f);
//包装成可写基本数据类型的输出流
DataOutputStream dos = new DataOutputStream(fos);
dos.writeByte(stu.name.length());//将学生姓名的字符个数保存下来,在读取时方便调用
dos.writeChars(stu.name);
dos.writeByte(stu.age);
dos.writeFloat(stu.score);
dos.writeByte(stu.disc.length());//将学生的描述的字符个数保存下来,在读取时方便调用
dos.writeChars(stu.disc);
dos.flush();
dos.close();


} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 将一个对象从文件中读取出来
* @param f 要从中读取对象的文件
*/
public void readStudent(File f){
try {
FileInputStream fis = new FileInputStream(f);
DataInputStream dis = new DataInputStream(fis);
String name = "";//定义一个空字符串用来保存学生的名字
int i = dis.readByte();
for(;i>0;i--){//通过调用保存的学生名字字符数量,来将保存的字符一个一个拼接起来成为一个字符串
name+=dis.readChar();
}
System.out.println(name);//输出保存的学生名字
System.out.println(dis.readByte());//输出保存的学生年龄
System.out.println(dis.readFloat());//输出保存的学生分数
String disc = "";//定义一个空字符串来保存学生的描述
i = dis.readByte();
for(;i>0;i--){//通过调用保存的学生描述字符数量,来将保存的字符一个一个拼接起来成为一个字符串
disc+=dis.readChar();
}
System.out.println(disc);
} catch (Exception e) {
e.printStackTrace();
}
}
}

上一篇: win下载安装zookeeper 下一篇: 没有下一篇了!
发表评论
用户名: 匿名