使文本文件可用于Java中的所有方法

时间:2010-06-24 21:42:04

标签: java

我有一个简单的单个Java文件,它有main方法和一堆其他方法。我想在我的main方法中打开一个文本文件,但保持打开并在我的java代码中的其他方法中附加到它。在Java中使用它的最佳方式是什么?

3 个答案:

答案 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的文件。