Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android文件系统是否可以从非活动类写入?_Java_Android_Io_Android Activity - Fatal编程技术网

Java Android文件系统是否可以从非活动类写入?

Java Android文件系统是否可以从非活动类写入?,java,android,io,android-activity,Java,Android,Io,Android Activity,我正在编写一个应用程序,需要每隔一段时间从android文件系统中进行写入和读取。该应用程序由一个ActionBarActivity组成,它承载三个不同的片段。我的计划是创建一个模型类来管理我所有的数据,并在它认为合适的时候读/写android文件系统。到目前为止,我还不知道如何让一个不是活动的类访问这些特性 如果可能的话,我的最终目标是允许I/O在模型类中独立工作,以尽可能少地保持耦合 下面是我试图在模型中运行的当前代码 private String readFromFile() {

我正在编写一个应用程序,需要每隔一段时间从android文件系统中进行写入和读取。该应用程序由一个ActionBarActivity组成,它承载三个不同的片段。我的计划是创建一个模型类来管理我所有的数据,并在它认为合适的时候读/写android文件系统。到目前为止,我还不知道如何让一个不是活动的类访问这些特性

如果可能的话,我的最终目标是允许I/O在模型类中独立工作,以尽可能少地保持耦合

下面是我试图在模型中运行的当前代码

private String readFromFile() {

    String ret = "";
    Scanner s;

    ArrayList<Player> loadedRosterList = new ArrayList<Player>();
    try {
        InputStream inputStream = openFileInput("applicationRoster.txt");

        if ( inputStream != null ) {
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String receiveString = "";

            while ( (receiveString = bufferedReader.readLine()) != null ) {
                s = new Scanner(receiveString);
                s.useDelimiter(",");

                Player newP = new Player(s.next(), s.next(), s.next());
                loadedRosterList.add(newP);
            }

            inputStream.close();

            currentRoster.replacePlayers(loadedRosterList);
        }
    }
    catch (FileNotFoundException e) {
        Log.e("login activity", "File not found: " + e.toString());
    } catch (IOException e) {
        Log.e("login activity", "Can not read file: " + e.toString());
    }

    return ret;
}
private String readFromFile(){
字符串ret=“”;
扫描器;
ArrayList loadedRosterList=新建ArrayList();
试一试{
InputStream InputStream=openFileInput(“applicationRoster.txt”);
如果(inputStream!=null){
InputStreamReader InputStreamReader=新的InputStreamReader(inputStream);
BufferedReader BufferedReader=新的BufferedReader(inputStreamReader);
字符串receiveString=“”;
而((receiveString=bufferedReader.readLine())!=null){
s=新扫描仪(接收字符串);
s、 使用分隔符(“,”);
Player newP=新玩家(s.next(),s.next(),s.next());
loadedRosterList.add(newP);
}
inputStream.close();
当前花名册.replacePlayers(loadedRosterList);
}
}
catch(filenotfounde异常){
Log.e(“登录活动”,“未找到文件:”+e.toString());
}捕获(IOE异常){
Log.e(“登录活动”,“无法读取文件:+e.toString());
}
返回ret;
}

您可以将
上下文
传递给您的方法:

private String readFromFile(Context context) {

}

注意不要将上下文泄漏到该方法之外,以避免内存泄漏。

Android项目与其他java项目类似。只需添加一个新的类文件并在活动中使用它。问题是什么?我正在尝试创建一个与活动分离的新类。因此,android现在允许我直接访问文件系统。我正试图找到一种方法来解决这个问题,以保留我的模型。@cmw2379-这是不正确的。Android不关心您从哪个类访问文件系统,只关心它在哪个进程中运行以及谁拥有它。某些特定的文件访问方法依赖于上下文对象来确定适当的目录路径,但是您可以按照Szymon的建议传递上下文,或者从活动类的上下文中确定适当的路径,然后保存/传递实际路径到需要执行文件系统工作的类(您不必像担心泄漏上下文对象那样担心路径泄漏)