获取FileWriter用Java编写的文件
有没有一种方法,我可以得到的文件,它正在编写的情况下FileWirter。我身边没有任何对文件对象的引用获取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
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 */
}