Используйте переменную / массив из одного класса Java, в другом. Объединить простые файлы Java? - PullRequest
0 голосов
/ 01 апреля 2011

Прежде чем я начну, позвольте мне извиниться за мое элементарное понимание Java, так как я почти уверен, что это будет простой проблемой для большинства программистов.

По сути, у меня есть два файла Java:все текстовые файлы в указанном каталоге, второй читает указанный текстовый файл и распечатывает его.

Я пытаюсь выяснить, как использовать выходные данные ListFiles (показано ниже - дает все текстовые файлы в директории) - я предполагаю, что это переменная «files» в нижней части System.out.println - и затем передаю ее в java-файл «FileData» (2-й пример ниже) для эффективного чтения всех текстовых файлов в определенной директории.*

Может быть, было бы как-то проще создать новый файл Java, который использует оба из них?Любое направление будет с благодарностью, спасибо.

import java.io.File;

public class ListFiles 
{

// bad attempt at OOP lol, f goes nowhere
public ListFiles(String f) {
}

public static void main(String[] args) 
{

  // Directory path here
  String path = "C:/WORKING_DIR_WITH_TXT_FILE"; 

  String files;
  File folder = new File(path);
  File[] listOfFiles = folder.listFiles(); 

  for (int i = 0; i < listOfFiles.length; i++) 
  {

   if (listOfFiles[i].isFile()) 
   {
   files = listOfFiles[i].getName();
       if (files.endsWith(".txt") || files.endsWith(".TXT"))
       {
          System.out.println(files);
       }
     }
  }
}
}

И вот второй файл Java, который читает файл TXT

import java.io.IOException;

public class FileData
{

 public static void main(String[] args) throws IOException
 {

   String file_name = "C:/WORKING_DIR_WITH_TXT_FILE";
     // "C:/directory/*.txt"???;

   try {
     ReadFile file = new ReadFile(file_name);
     String[] aryLines = file.OpenFile();

     int i;
     for (i=0; i < aryLines.length; i++) {
       System.out.println(aryLines[i]);
     }
   }

   catch (IOException e) {
     System.out.println( e.getMessage() );
   }
 }
}

Ответы [ 2 ]

1 голос
/ 01 апреля 2011

Насколько я понимаю, вы в настоящее время можете успешно запускать эти два класса как отдельные программы, но вы хотите вызвать ListFiles в качестве основной программы и заставить ее вызывать FileData для распечатки содержимого файлов.

В реальных приложениях Java большинство классов не имеют метода main, поскольку они не предназначены для непосредственного вызова пользователем из командной строки. В вашем случае ListFiles должен иметь метод main, чтобы вы могли его запустить, но FileData должен иметь метод, который можно вызывать из ListFiles.

По сути, вы можете изменить подпись FileData.main() на:

public static void showFile(String file_name)

и его тело останется прежним.

Затем, в ListFiles, где вы в данный момент отображаете имя файла, вы вместо этого / дополнительно получите:

FileList.showFile( files );

Это вызовет метод в FileList, передав ему имя файла в качестве параметра.

0 голосов
/ 01 апреля 2011

Вам необходимо сериализовать объект "файлы" в программе ListFiles и десериализовать в FileData классе.

РЕДАКТИРОВАТЬ: Согласно комментарию Дэйва Коста, еслиВы не знаете о сериализации и десериализации, тогда альтернатива:

Измените основной метод в ListFiles на getListOfFiles().

И получите доступ к нему в классе FileData, чтобыполучить список файлов как ListFiles.getListOfFiles().

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