Сделать текстовый файл доступным для всех методов в Java - PullRequest
1 голос
/ 25 июня 2010

У меня есть простой одиночный файл Java, в котором есть метод main и куча других методов. Я хотел бы открыть текстовый файл в моем основном методе, но оставить его открытым и добавить к нему другие мои методы в моем коде Java. что является лучшим способом сделать это в Java.

Ответы [ 3 ]

3 голосов
/ 25 июня 2010

Взгляните на класс FileWriter в java.io.

private FileWriter _writer;

public static void main(String args[])
{
    _writer = new FileWriter(filePath, true);
}

Filepath - это имя вашего файла, true - добавлять и не переписывать ваш файл каждый раз.Этот писатель будет оставаться открытым, пока вы его не закроете.

_writer.close();

Я укажу, что это, вероятно, не лучший вариант.Поскольку вы можете в любое время добавить файл, нет причин оставлять свой поток открытым.Вы можете просто воссоздать его с переменной append как true.

Метод записи может подойти вам лучше, так что вы также можете когда-нибудь поместить его в свой собственный поток.

public static void write(String output)
{
    FileWriter writer = new FileWriter(filePath, true);
    writer.write(output);
    writer.close();
}
2 голосов
/ 25 июня 2010

Вам нужно то, что в объектно-ориентированном программировании называется «Переменная экземпляра»

Эта переменная доступна из методов одного и того же объекта, и вам не нужно ее передавать.

Таким образом, ваш класс может быть определен как:

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();
  }

Идея в том, чтобы иметь закрытый атрибут, который используется в остальных методах, чтобы вам не приходилось передавать ссылку повсюду.

Если у вас разные классы, пытающиеся получить доступ к одному и тому же атрибуту, возможно, вы могли бы переместить эти методы в этот класс.

1 голос
/ 25 июня 2010

То, что вы ищете, это Writer, объект, который позволяет методам писать в него (или PrintWriter, который позволяет вам печатать построчно).Вы можете создавать Writers из различных источников вывода, включая файлы с FileWriter.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...