2012-01-03 5 views
2

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

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

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

} 

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

Приветствие Ребята, спасибо :)

ответ

1

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

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

Спасибо .. Я создал суперкласс, как вы сказали. Спасибо – StrangeLondoner

0

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

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

+0

Спасибо, я дам ему идти. – StrangeLondoner