Создание отдельного метода для чтения в текстовых файлах из подпапки в папке активов - PullRequest
2 голосов
/ 03 января 2012

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

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

public class ReadAssets extends Activity {


public void read(Context context, String filepath, int textviewid) {

    try {
        InputStream input = getAssets().open(filepath);

        int size = input.available();

        // Read the entire asset into a local byte buffer.
        byte[] buffer = new byte[size];
        input.read(buffer);
        input.close();

        // Convert the buffer into a string.
        String text = new String(buffer);

        // Finally insert the string into the text view.
        TextView tv = (TextView) findViewById(textviewid);
        tv.setText(text);

    } catch (IOException e) {
        // Throws an exception if an error is found
        throw new RuntimeException(e);
    }


  }
}

Упражнение, в которое я хотел бы поместить этот метод:

public class GeneralSetupActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gettingstarted_layout);


    ReadAssets nA = new ReadAssets();
    nA.read(this,"gettingstarted/GettingStarted.txt", R.id.displayTextView);

//  try {
//  InputStream input =getAssets().open("gettingstarted/GettingStarted.txt");
//
//  int size = input.available();
//
//  // Read the entire asset into a local byte buffer.
//  byte[] buffer = new byte[size];
//  input.read(buffer);
//  input.close();
//
// // Convert the buffer into a string.
// String text = new String(buffer);
//
//          // Finally insert the string into the text view.
//          TextView tv = (TextView) findViewById(R.id.displayTextView); 
//          tv.setText(text);
//          
//      } catch (IOException e) {
//          // Throws an exception if an error is found
//          throw new RuntimeException(e);
//      }
      }

}

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

Ура, ребята, спасибо:)

Ответы [ 2 ]

1 голос
/ 03 января 2012

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

public class ExtraFunctionalActivity extends Activity
{
    public void read(...)
    {        
        //your code
    }
}

public class GeneralSetupUtility extends ExtraFunctionalActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gettingstarted_layout);

        read(this,"gettingstarted/GettingStarted.txt", R.id.displayTextView);

    }
}

В противном случае, если этот метод необходимкуча несвязанных классов, вы можете поместить его в служебный класс;

public class FileUtil
{

    public static void read(...)
    {
        //your code
    }

}

, затем вы можете вызвать его, где необходимо, с помощью

FileUtil.read(args here);
0 голосов
/ 03 января 2012

У вас может быть класс, подобный Fileparsingutility, с методом, который вы хотите разделить. Вы можете определить Inputstream как параметр (вы можете передать другие необходимые вещи в качестве параметра для этого метода). Что бы вы ни хотели использовать этот метод, создайте экземпляр выше класса и вызовите метод, передав параметры.

Fileparinsgutility util = new Fileparsingutility (); Returnobj retObj = util.parse (......);

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