【问题标题】:FileReader and BufferedReaderFileReader 和 BufferedReader
【发布时间】:2012-05-06 20:11:07
【问题描述】:

我有 3 种方法

  1. 打开文件
  2. 用于读取文件
  3. 用于返回读取方法中读取的内容

这是我的代码:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication56;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.rmi.RemoteException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author x
 */
public class RemoteFileObjectImpl extends java.rmi.server.UnicastRemoteObject  implements RemoteFileObject
{
    public RemoteFileObjectImpl() throws java.rmi.RemoteException {
        super();
    }

    File f = null;
    FileReader r = null;
    BufferedReader bfr = null;

    String output = "";
    public void open(String fileName) {
        //To read file passWord
        f = new File(fileName);
    }
    public String readLine() {
        try {
            String temp = "";
            String newLine = System.getProperty("line.separator");
            r = new FileReader(f);
            while ((temp = bfr.readLine()) != null) {
                output += temp + newLine;
                bfr.close();
            }
        }
        catch (IOException ex) {
           ex.printStackTrace();
        }

        return output;
    }

    public void close() {
        try {
            bfr.close();
        } catch (IOException ex) {
        }
    }

    public static void main(String[]args) throws RemoteException{
        RemoteFileObjectImpl m = new RemoteFileObjectImpl();
        m.open("C:\\Users\\x\\Documents\\txt.txt");
        m.readLine();
        m.close();
    } 
}

但它不起作用。

【问题讨论】:

  • “不起作用”还不够好。说明您的预期和得到的结果。
  • 这些错误出现在Ran的工作时,不知为什么。?在 javaapplication56.RemoteFileObjectImpl.main(RemoteFileObjectImpl.java:73) 的 javaapplication56.RemoteFileObjectImpl.readLine(RemoteFileObjectImpl.java:51) 的线程“main”java.lang.NullPointerException 中的异常
  • 再说一遍:您预期会发生什么,而实际上发生了什么?
  • @Seetah 我们不会检查您的所有代码或复制它只是为了尝试找到您所期望的。这就像咨询医生,告诉我们您的症状,然后我们就可以寻找治疗方法。
  • 现在我们正在谈论@Seetah,它告诉您和我们究竟是什么问题(在下面更新了我的答案)。第 51 行使用了一个为 null 的变量。

标签: java bufferedreader filereader


【解决方案1】:

你期望它做什么,你没有对你读到的那行做任何事情,只是

m.readLine();

改为:

String result = m.readLine();

或使用您保存的output 变量。

你想把它保存到一个变量中,打印出来,再写到另一个文件吗?

更新:在 cmets 中更新后: 您的变量 bfr 永远不会创建/初始化。你只是这样做:

r = new FileReader(f);

所以bfr 仍然是null

你应该这样做:

bfr = new BufferedReader(new FileReader(f));

【讨论】:

  • r = new FileReader(f); 这样就少了一步。
  • 嗯,@Neil 代码没有使用r,但它使用的是bfr,所以你最好更改它或初始化bfr。除了FileReader没有readLineBufferedReader有。
  • 好吧,我猜他不需要保存中间文件阅读器,但bfr = new BufferedReader(r);不会工作吗?
猜你喜欢
  • 1970-01-01
  • 2012-03-27
  • 1970-01-01
  • 2014-09-24
  • 1970-01-01
  • 2018-08-04
  • 1970-01-01
  • 2017-12-01
相关资源
最近更新 更多