我正在开发一个Android应用程序,需要在执行期间创建/修改一些文件。我知道在android中管理文件我需要使用Context的方法子类。但是在我的应用程序中,可以访问文件的类不是Activity类,当我需要一些图形功能时,我习惯使用这个类(与用户交互,显示图像ecc ..)。
在我看来,管理我的文件的类用于进行一些加密操作,图形类是其他的(在mvc结构中,管理我的文件的类在模型部分,而不在视图中)。我没有找到任何以这种方式使用Context类的解决方案,没有任何图形用途。我的类应该具有哪些特性来实现I / O文件操作(XML和有效类型的声明)?
由于
答案 0 :(得分:0)
您可以使用getApplicationContext()将活动的上下文引用传递给datamodel。
yourFileUtilObject.objectMethod(getApplicationContext());
在您的fileUtil类中,需要上下文的方法将采用Context类型的参数。
public void objectMethod(Context context){
// your io code with refernce to context when needed
}
答案 1 :(得分:0)
您始终可以在Android Context类中获取文件的抽象表示(java.io.File),然后将此java.io.File对象传递到FileUtils类中,例如在Activity类中:
public class MyActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
... ...
File file = new File(getExternalFilesDir(null), "sample.txt");
FileUtils.encrypt(file);
... ...
}
}
因此,您可以将FileUtils创建为与Android Context分离的POJO类。
答案 2 :(得分:0)
我不知道它是否有帮助,但这是我在自己的日志记录类中如何使用文件输出到外部存储而不引用活动类的示例:
String logFilePath = "path/on/sd/card";
File logFileDir = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), logFilePath);
if (!logFileDir.exists()) {
if(!logFileDir.mkdirs()) {
Log.w(LOG_TAG, "Could not create directory: " + logFileDir.getAbsolutePath());
return;
}
}
...
String logFilePathName = logFilePath + "/" + dateTime + logFileNameSuffix;
File logFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), logFilePathName);
try {
logFilePrintWriter = new PrintWriter(new FileWriter(logFile));
logFilePrintWriter.println(dateTime + " - " + firstMsg);
logFilePrintWriter.flush();
} catch (IOException e) {
Log.w(LOG_TAG, "Could not create log file: " + logFile.getAbsolutePath());
}