我有一个简单的单个Java文件,它有main方法和一堆其他方法。我想在我的main方法中打开一个文本文件,但保持打开并在我的java代码中的其他方法中附加到它。在Java中使用它的最佳方式是什么?
答案 0 :(得分:3)
查看java.io中的FileWriter类。
private FileWriter _writer;
public static void main(String args[])
{
_writer = new FileWriter(filePath, true);
}
文件路径是文件的名称,true是要追加,而不是每次都重写文件。这位作家将保持开放,直到你关闭它。
_writer.close();
我会指出这可能不是最好的选择。由于您可以随时附加到文件,因此没有理由让您的信息流保持打开状态。您可以使用append变量将其重新创建为true。
写入方法可能更适合你,所以你有一天也可以把它放在它自己的线程上。
public static void write(String output)
{
FileWriter writer = new FileWriter(filePath, true);
writer.write(output);
writer.close();
}
答案 1 :(得分:2)
您需要将面向对象编程中的内容称为“实例变量”
此变量可从同一对象中的方法访问,您无需传递它。
所以你的课程可以定义为:
class MyClass {
// This is your instance variable
private PrintWriter output;
public void methodOne() {
output.println("One");
}
public void methodTwo() {
output.println("Two");
}
public void methodThree() {
output.println("Three");
}
// you get the idea
public void close(){
output.close();
}
}
通过这种方式,您可以创建MyClass
的对象并初始化您的实例变量并在所有方法中使用它。
这可能是主要方法:
public static void main( String [] args ) {
MyClass object = new MyClass();
// add another method to initialize the instance variable
object.useFile("/Users/yourname/yourFile.txt");
// useFile defined as: internally initialized as:
// output = new PrintStream( new FileOutputStream( fileName ));
object.methodOne();
object.methodTwo();
object.methodThree(),
object.close();
}
这个想法是拥有一个在其余方法中使用的私有属性,因此您不必在整个地方传递引用。
如果您有不同的类尝试访问相同的属性,也许您可以将这些方法移动到此类。
答案 2 :(得分:1)
你正在寻找的是一个Writer,一个允许方法写入它的对象(或PrintWriter,它允许你逐行打印)。您可以从各种输出源创建Writer,包括使用FileWriter的文件。