获取FileWriter用Java编写的文件

获取FileWriter用Java编写的文件,java,file,Java,File,有没有一种方法,我可以得到的文件,它正在编写的情况下FileWirter。我身边没有任何对文件对象的引用 public class JobResponseWriter extends FileWriter{ public JobResponseWriter(Job job) throws IOException { super(File.createTempFile("JobResponse" + job.getId() ,"tmp")); } publ

有没有一种方法,我可以得到的文件,它正在编写的情况下FileWirter。我身边没有任何对文件对象的引用

public class JobResponseWriter extends FileWriter{
    public JobResponseWriter(Job job) throws IOException {
        super(File.createTempFile("JobResponse" + job.getId() ,"tmp"));
    }

    public void writeLn(String str) throws IOException {
        super.write(str + "\n");
    }
}

如何获取在本例中创建的文件。只有在关闭编写器后,我才能访问该文件。但我不想保留创建的所有文件的单独列表。最好的方法是什么。

因为在超级调用之前您无法获取文件

你可以试试这样的

public class JobResponseWriter {

    private final File f;
    private final fw;

    public JobResponseWriter(Job job) throws IOException {
        this.f = File.createTempFile("JobResponse" + job.getId() ,"tmp"));
        this.fw = new FileWriter(f);
    }

    public void writeLn(String str) throws IOException {
        fw.write(str + "\n");
    }

    // public void getFile() 
}
如果希望获得类似filewriter的对象的完整功能,可能需要实现这些接口

可关闭、可冲洗、可追加、可自动关闭

根据,无法检索
文件
对象。使用
文件编写器
也不可能做到这一点。但是,从不同的角度来看问题,您可能会得出这样的结论(假设
Job
是您的类。如果不是,您可以从
Job
扩展):


您只需保存对文件的引用:

public class JobResponseWriter extends FileWriter{
    private final File myFile;
    public JobResponseWriter(Job job) throws IOException {
        this(File.createTempFile("JobResponse" + job.getId() ,"tmp"));
    }
    public JobResponseWriter(File f) throws IOException {
        super(f);
        myFile = f;
    }
    /* your code here */
}

您必须使用超级构造函数来创建临时文件吗?如果您有其他方法,我需要JobResponseWriter充当文件编写器。让我知道这是“组合重于继承”的标准问题。您应该创建一个
File
成员变量并“模拟”Filewriter类,而不是直接扩展itAlright…我知道了…有没有办法从Filewriter实例中找到该文件?如果您可以获得该文件,您到底想对其做什么?嗯。。。等待我想我和C++有了混淆。可能不是这样,但是在方法
中。我检查完后会回来的。这是不可能的解决方案Java@Ysak所以我编辑了代码。我从不同的角度看待这个问题。而且它肯定会工作。@cricket_007-在超级调用之前不需要初始化。之后初始化就足够了。看我的答案啊,是的。我没有考虑过这种方式这就是我所实现的…基本上是我所采用的文件创建逻辑。。。
public class JobResponseWriter extends FileWriter{
    private final File myFile;
    public JobResponseWriter(Job job) throws IOException {
        this(File.createTempFile("JobResponse" + job.getId() ,"tmp"));
    }
    public JobResponseWriter(File f) throws IOException {
        super(f);
        myFile = f;
    }
    /* your code here */
}