gpt4 book ai didi

java - 为什么我的代码没有创建新文件?

转载 作者:行者123 更新时间:2023-12-01 17:31:33 24 4
gpt4 key购买 nike

这是我刚刚写的一个类。以前它实际上在另一个应用程序中创建了一个文件。但不知何故它不起作用。它没有创建新文件,我收到此错误:

package hostelmanagement;

/**
*
* @author princess
*/
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

import java.io.Externalizable;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.swing.JOptionPane;

/**
*
* @author princess
*/
public class Student implements Serializable, Externalizable {

public static Set<Student> listOfStudents = new HashSet<Student>();
public static File oFile = new File("Student.dat");


//Data Members
private String studentID;
private String name;
private Date dateOfReg;

//Constructor
Student(String number,String name)
{
this.studentID = number;
this.name = name;
dateOfReg = new Date();
}


public String getName()
{
return name;
}

public String getStudentID()
{
return studentID;
}

public Date getDateOfReg()
{
return dateOfReg;
}

public void register() throws FileNotFoundException, IOException, ClassNotFoundException
{

HashSet<Student> sss = Student.getListOfStudents();
sss.add(this);
FileOutputStream OFileStream = new FileOutputStream(oFile);
ObjectOutputStream ObjectOFileStream = new ObjectOutputStream(OFileStream);
ObjectOFileStream.writeObject(sss);
ObjectOFileStream.close();
}

public static HashSet<Student> getListOfStudents() throws FileNotFoundException, IOException, ClassNotFoundException
{
HashSet ss;
File iFile = new File("Student.dat");
FileInputStream IFileStream = new FileInputStream(iFile);
ObjectInputStream ObjectIFileStream = new ObjectInputStream(IFileStream);
ss = (HashSet<Student>) ObjectIFileStream.readObject();
ObjectIFileStream.close();
return (HashSet<Student>) ss;
}

public static void printListOfStudents() throws FileNotFoundException, IOException, ClassNotFoundException
{
HashSet<Student> sa = Student.getListOfStudents();
for (Student x : sa)
{System.out.println(x.toString());}
}


public static Student getStudentByID(String aNumber) throws FileNotFoundException, IOException, ClassNotFoundException
{
HashSet<Student> currentListOfStudents = Student.getListOfStudents();
Student result = null;
for (Student x : currentListOfStudents)
{
if (x.getStudentID().equalsIgnoreCase(aNumber))
{ result = x;
break;
}
}
if (result == null)
{
JOptionPane.showMessageDialog(null, "Student not found");
}
return result;
}



@Override
public String toString()
{
// include the code to retrieve assigned apartment
return "Name: " + name +" StudentID: "+ studentID + " Registered On: " + dateOfReg;
}


@Override
public boolean equals(Object another)
{
Student stud = (Student)another;
return this.name.equals(stud.name)&& this.studentID.equals(stud.studentID);
}

@Override
public int hashCode()
{
int hash = name.hashCode();
return hash;

}

@Override
public void writeExternal(ObjectOutput out) throws IOException {
throw new UnsupportedOperationException("Not supported yet.");
}

@Override
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
throw new UnsupportedOperationException("Not supported yet.");
}
}

错误:

run:
Test 1
Apr 27, 2012 10:19:30 AM hostelmanagement.HostelManagement main
SEVERE: null
java.io.FileNotFoundException: Student.dat (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at hostelmanagement.Student.getListOfStudents(Student.java:86)
at hostelmanagement.Student.register(Student.java:74)
at hostelmanagement.HostelManagement.main(HostelManagement.java:34)
Exception in thread "main" java.io.FileNotFoundException: Student.dat (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at hostelmanagement.Student.getListOfStudents(Student.java:86)
at hostelmanagement.HostelManagement.main(HostelManagement.java:46)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

问题出在哪里?

最佳答案

鉴于您没有提供主要逻辑,我假设您在调用 register() (写入文件)之前调用 getListStudents() (读取文件) 。没有找到它并不奇怪。

问题是你的程序试图读取一个仍然不存在的文件,而不是它无法创建它。请仔细阅读您的堆栈跟踪。

关于java - 为什么我的代码没有创建新文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10346415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com