java - 当我调用 BufferedReader 时,我的程序卡住了

标签 java bufferedreader

我正在开发一个程序,它在 jlist 中显示我的 Stock 类中的一个对象。我让它工作,我可以把这些信息写入一个文件,但是当我试图从同一个文件中读取时,我的程序就死机了。我想知道我的代码是否设置错误以从文件中读取,因为这是我第一次尝试这样做。我要做的就是从文件中保存的变量中为我的 Stock 对象设置变量。谢谢

 public void getData(){

    StringTokenizer row;
    Stock aStock = new Stock();

    try{
        BufferedReader inbuffer = new BufferedReader(new FileReader(fileName));
        String inputString;
        inputString = inbuffer.readLine();
        while(inputString != null){
            row = new StringTokenizer(inputString, DELIMTER);
            aStock.setStockName(row.nextToken());
            aStock.setStockQuantity(Integer.parseInt(row.nextToken()));
            aStock.setPurchasePrice(Double.parseDouble(row.nextToken()));
            aStock.setCurrentPrice(Double.parseDouble(row.nextToken()));

        }
        inbuffer.close();
    }
    catch(IOException ioe){
        JOptionPane.showMessageDialog(null, ioe.getMessage(), "File Read Error", JOptionPane.ERROR);
    }

}

最佳答案

您需要一个 if block 而不是 while block ,因为您只想将值设置为一个 Stock 对象。

替换

while(inputString != null)

if(inputString != null)

此外,将返回类型从 void 更改为 Stock 并返回 aStock 以便您可以使用返回值。

public Stock getData() {

    StringTokenizer row;
    Stock aStock = new Stock();

    try {
        BufferedReader inbuffer = new BufferedReader(new FileReader(fileName));
        String inputString;
        inputString = inbuffer.readLine();
        if (inputString != null) {
            row = new StringTokenizer(inputString, DELIMTER);
            aStock.setStockName(row.nextToken());
            aStock.setStockQuantity(Integer.parseInt(row.nextToken()));
            aStock.setPurchasePrice(Double.parseDouble(row.nextToken()));
            aStock.setCurrentPrice(Double.parseDouble(row.nextToken()));

        }
        inbuffer.close();
    } catch (IOException ioe) {
        JOptionPane.showMessageDialog(null, ioe.getMessage(), "File Read Error", JOptionPane.ERROR);
    }
    return aStock;
}

关于java - 当我调用 BufferedReader 时,我的程序卡住了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62202674/

相关文章:

java - 是否有可能通过包含消息的 messegaID 的 url 在 gmail 中显示消息?

java - 重启VM后无法启动elasticsearch

java - 是否可以覆盖断电操作?

java - 我如何将 Long 变量与 null 进行比较

Java 语法错误缓冲读取器

java - 如何使用 hibernate-jpa2.0 抛出 OptimisticLockException

java - BufferedReader 和 BufferedWriter

java - 创建 BufferedReader 以读取导致错误 : Unable to start activity 的 URL

java - 使用 Buffered Write/Reader 提高读取和写入大文件的速度

java - 具有多个字段的 Realm java排序