创建一个单独的方法来从assets文件夹中的子文件夹中读取文本文件

时间:2012-01-03 01:42:21

标签: java android file methods assets

这是我第一次来这里,所以我有点紧张,请原谅我,如果我似乎并不完全清楚我在问什么。

问题是,我试图使用我在单独的类中创建的方法从assets文件夹中的子文件夹中读取文件。我已经研究了几天,但我无法在任何地方找到解决方案,所以我作为最后的手段来到这里。我需要将文件读取方法分开,因为有其他视图/活动将使用完全相同的方法,我不认为为每个活动复制和粘贴相同的代码是明智的。好了,到目前为止我做了什么:

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 个答案:

答案 0 :(得分:1)

如果你需要这个可用于所有不同类型的Activity,你应该考虑将该方法放在一个超类中,这样所有的孩子都可以使用它。

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

答案 1 :(得分:0)

你可能有一个类似Fileparsingutility的类,你想要分离的方法。您可以将Inputstream定义为参数(您可以将其他所需的东西作为该方法的参数传递)。您想要使用此方法的任何行为,实例化上面的类并通过传递参数来调用该方法。

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