Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从文本文件中检索字符串数据并将其存储到对象_Java_String_While Loop_Dao - Fatal编程技术网

Java 从文本文件中检索字符串数据并将其存储到对象

Java 从文本文件中检索字符串数据并将其存储到对象,java,string,while-loop,dao,Java,String,While Loop,Dao,在我的代码示例中,您将使用大量代码 但是,问题在于restoreCourse方法(在代码末尾),在该方法中,我尝试将所有数据(从StorageManager中检索到的)恢复到字符串数组(名为lineBuffer)中,然后使用该数据恢复类课程的对象,并在方法末尾返回它 public class Course { private String name; private int courseID; private String signUpCode; private String courseGu

在我的代码示例中,您将使用大量代码

但是,问题在于restoreCourse方法(在代码末尾),在该方法中,我尝试将所有数据(从StorageManager中检索到的)恢复到字符串数组(名为lineBuffer)中,然后使用该数据恢复类课程的对象,并在方法末尾返回它

public class Course {

private String name;
private int courseID;
private String signUpCode;
private String courseGuide;
private String courseScheme;
private String courseGrade;
private String courseSpeed;
private String courseCredit;

public Course(String name,int courseID,String signUpCode,
        String courseGuide,String courseScheme,String courseSpeed,String 
courseCredit){
    this.name = name;
    this.courseID = courseID;
    this.signUpCode= signUpCode;
    this.courseGuide = courseGuide;
    this.courseScheme = courseScheme;
    this.courseSpeed = courseSpeed;
    this.courseCredit = courseCredit;
    this.courseGrade = "";
}
public int getCourseID(){
    return courseID;
}
public String getCourseName(){
    return name;
}
public String getSignUpCode(){
    return signUpCode;
}
public String getCourseScheme(){
    return courseScheme;
}
public String getCourseGuide(){
    return courseGuide;
}
public String getCourseGrade(){
    return courseGrade;
}
public String getCourseSpeed(){
    return courseSpeed;
}
public String getCourseCredit(){
    return courseCredit;
}

@Override
public String toString() {

    StringBuffer msg = new StringBuffer();
    msg.append (courseID);
    msg.append ("-");
    msg.append (name);
    msg.append ("-");
    msg.append (signUpCode);
    msg.append ("-");
    msg.append (courseGuide);
    msg.append ("-");
    msg.append (courseScheme);
    msg.append ("-");
    msg.append (courseGrade);
    msg.append ("-");
    msg.append (courseSpeed);
    msg.append ("-");
    msg.append (courseCredit);
    msg.append ("\n");
    return msg.toString();
}
}


public class FileCourseDAO implements CourseDAO {

public void  saveCourse(Course course){     

    StringBuffer dataBuffer = new StringBuffer();
    dataBuffer.append (course.getCourseID());
    dataBuffer.append ("-");
    dataBuffer.append (course.getCourseName());
    dataBuffer.append ("-");
    dataBuffer.append (course.getSignUpCode());
    dataBuffer.append ("-");
    dataBuffer.append (course.getCourseGuide());
    dataBuffer.append ("-");
    dataBuffer.append (course.getCourseScheme());
    dataBuffer.append ("-");
    dataBuffer.append (course.getCourseGrade());
    dataBuffer.append ("-");
    dataBuffer.append (course.getCourseSpeed());
    dataBuffer.append ("-");
    dataBuffer.append (course.getCourseCredit());
    dataBuffer.append ("\n");

    StorageManager packer = StorageManager.getInstance();

    try {
        packer.storeStringData (dataBuffer.toString().trim());
    } catch (IOException e){
        System.out.println ("Storage manager Error:");
        e.printStackTrace ();
    }
}


public Course  restoreCourse(int courseID){
    StorageManager packer = StorageManager.getInstance();

    if (!packer.storeExists ()){
        System.out.println ("No file with data.");
        return;
    }
    try {
        String[] lineBuffer = null;
        List<String> dataBuffer = packer.readData();

        for (String dataLine : dataBuffer){
            lineBuffer = dataLine.split(" ");   
        }



    Course course = new Course ();

    } catch (IOException e) {
        System.out.println ("Error while reading data file.");
    }
    return course;
}
}
公共课{
私有字符串名称;
私人国际法院;
私有字符串注册码;
私人字符串教程指南;
私人弦乐课程;
私人弦乐队;
私人弦乐;
私人字符串编辑;
公共课程(字符串名称、int-courseID、字符串注册码、,
弦乐课程指南,弦乐课程主题,弦乐课程速度,弦乐
课程(编辑){
this.name=名称;
this.courseID=courseID;
this.signUpCode=signUpCode;
this.courseGuide=courseGuide;
this.courseScheme=courseScheme;
this.courseSpeed=courseSpeed;
this.courseCredit=courseCredit;
this.courseGrade=“”;
}
public int getCourseID(){
返回路线ID;
}
公共字符串getCourseName(){
返回名称;
}
公共字符串getSignUpCode(){
返回注册码;
}
公共字符串getCourseScheme(){
返回路线方案;
}
公共字符串getCourseGuide(){
回程指南;
}
公共字符串getCourseGrade(){
返回航线;
}
公共字符串getCourseSpeed(){
回程速度;
}
公共字符串getCourseCredit(){
返回课程编辑;
}
@凌驾
公共字符串toString(){
StringBuffer msg=新的StringBuffer();
msg.append(courseID);
msg.append(“-”);
msg.append(名称);
msg.append(“-”);
msg.append(注册码);
msg.append(“-”);
msg.append(courseGuide);
msg.append(“-”);
msg.append(courseScheme);
msg.append(“-”);
msg.append(courseGrade);
msg.append(“-”);
msg.append(courseSpeed);
msg.append(“-”);
msg.append(courseCredit);
msg.append(“\n”);
返回msg.toString();
}
}
公共类FileCourseDAO实现CourseDAO{
公共无效存储过程(过程){
StringBuffer-dataBuffer=新的StringBuffer();
dataBuffer.append(course.getCourseID());
dataBuffer.append(“-”);
dataBuffer.append(course.getCourseName());
dataBuffer.append(“-”);
dataBuffer.append(course.getSignUpCode());
dataBuffer.append(“-”);
dataBuffer.append(course.getCourseGuide());
dataBuffer.append(“-”);
dataBuffer.append(course.getCourseScheme());
dataBuffer.append(“-”);
dataBuffer.append(course.getCourseGrade());
dataBuffer.append(“-”);
dataBuffer.append(course.getCourseSpeed());
dataBuffer.append(“-”);
dataBuffer.append(course.getCourseCredit());
dataBuffer.append(“\n”);
StorageManager打包器=StorageManager.getInstance();
试一试{
packer.storeStringData(dataBuffer.toString().trim());
}捕获(IOE异常){
System.out.println(“存储管理器错误:”);
e、 printStackTrace();
}
}
公共课程恢复课程(国际课程ID){
StorageManager打包器=StorageManager.getInstance();
如果(!packer.storeExists()){
System.out.println(“没有包含数据的文件”);
返回;
}
试一试{
字符串[]lineBuffer=null;
List-dataBuffer=packer.readData();
for(字符串数据行:dataBuffer){
lineBuffer=dataLine.split(“”);
}
课程=新课程();
}捕获(IOE异常){
System.out.println(“读取数据文件时出错”);
}
返回路线;
}
}

我想通过使用方法“restoreCourse”还原对象(我将其保存在方法“saveCourse”中作为文本文件)并返回该对象

  • 在方法
    saveCourse
    中,您序列化了由
    -
    分隔的课程字段;因此,在拆分该字符串时,必须使用
    dataLine.split(“-”)
    而不是
    dataLine.split(“”
  • 您正在创建
    课程
    类的实例,并在不初始化的情况下返回它。拆分后,使用这些数据初始化课程对象并将其返回给调用者
以下代码可能会起作用:

public Course  restoreCourse(int courseID){
    StorageManager packer = StorageManager.getInstance();

    if (!packer.storeExists ()){
        System.out.println ("No file with data.");
        return;
    }
    Course course = null;
    try {
        String[] lineBuffer = null;
        List<String> dataBuffer = packer.readData();

        for (String dataLine : dataBuffer){
            lineBuffer = dataLine.split("-");
            if (lineBuffer.length > 7 && courseID == lineBuffer[0]) {
                course = new Course(lineBuffer[1],lineBuffer[0],lineBuffer[2], lineBuffer[3],lineBuffer[4],lineBuffer[6],lineBuffer[7] ); 
            }
        }
    } catch (IOException e) {
        System.out.println ("Error while reading data file.");
    }
    return course;
}
公共课程恢复课程(int课程ID){
StorageManager打包器=StorageManager.getInstance();
如果(!packer.storeExists()){
System.out.println(“没有包含数据的文件”);
返回;
}
课程=空;
试一试{
字符串[]lineBuffer=null;
List-dataBuffer=packer.readData();
for(字符串数据行:dataBuffer){
lineBuffer=dataLine.split(“-”);
如果(lineBuffer.length>7&&courseID==lineBuffer[0]){
课程=新课程(lineBuffer[1],lineBuffer[0],lineBuffer[2],lineBuffer[3],lineBuffer[4],lineBuffer[6],lineBuffer[7]);
}
}
}捕获(IOE异常){
System.out.println(“读取数据文件时出错”);
}
返回路线;
}
注: 注意构造函数参数的顺序和
saveCourse()
方法中字段的顺序(它们的顺序不同);我试着匹配它们,但检查一下它们的顺序是否正确


我想通过使用方法“restoreCourse”还原对象(我将其保存在方法“saveCourse”中作为文本文件)并返回该对象

  • 在方法
    saveCourse
    中,您序列化了由
    -
    分隔的课程字段;因此,在拆分该字符串时,必须使用
    dataLine.split(“-”)
    而不是
    dataLine.split(“”
  • 您正在创建
    课程
    类的实例,并在不初始化的情况下返回它。拆分后,使用这些数据初始化课程对象并将其返回给调用者
以下代码可能会起作用:

public Course  restoreCourse(int courseID){
    StorageManager packer = StorageManager.getInstance();

    if (!packer.storeExists ()){
        System.out.println ("No file with data.");
        return;
    }
    Course course = null;
    try {
        String[] lineBuffer = null;
        List<String> dataBuffer = packer.readData();

        for (String dataLine : dataBuffer){
            lineBuffer = dataLine.split("-");
            if (lineBuffer.length > 7 && courseID == lineBuffer[0]) {
                course = new Course(lineBuffer[1],lineBuffer[0],lineBuffer[2], lineBuffer[3],lineBuffer[4],lineBuffer[6],lineBuffer[7] ); 
            }
        }
    } catch (IOException e) {
        System.out.println ("Error while reading data file.");
    }
    return course;
}
公共课程恢复课程(国际课程)