Java Android在/data/local/中创建一个文件并写入其中
我使用的是非活动类,我想在/data/local/path中创建一个文件。我正在为此使用Emulator。在这个路径中创建文件后,我想每隔10秒在文件中写入一些字符串 因为我使用的是非活动类,所以我没有上下文,我想不使用上下文 有人能帮我怎么做到这一点吗?提前感谢:) 我的密码是-Java Android在/data/local/中创建一个文件并写入其中,java,android,Java,Android,我使用的是非活动类,我想在/data/local/path中创建一个文件。我正在为此使用Emulator。在这个路径中创建文件后,我想每隔10秒在文件中写入一些字符串 因为我使用的是非活动类,所以我没有上下文,我想不使用上下文 有人能帮我怎么做到这一点吗?提前感谢:) 我的密码是- try { File myFile = new File("/data/local/tmp/welcome-to-java.txt"); myFile.
try {
File myFile = new File("/data/local/tmp/welcome-to-java.txt");
myFile.createNewFile();
FileOutputStream fOut = new FileOutputStream(myFile);
OutputStreamWriter myOutWriter =
new OutputStreamWriter(fOut);
myOutWriter.append(tempList.toString());
myOutWriter.close();
fOut.close();
} catch (Exception e) {
}
您需要一个
上下文
实例来访问文件系统:-)但是,实际上不可能“没有上下文为您工作”,因为Android运行时中的每个对象
实际上都会在一些上下文
(活动、服务、广播接收器等)中创建,所以只需将该上下文传递到对象:-)
至于如何使用上下文进行操作,只需使用
yourContext.openFileOutput(path, Context.MODE_PRIVATE);
要获得FileOutputStream
,您需要:-)
编辑: 有一种方法可以避免直接传递
上下文
,但需要注意的是,通常不赞成这样做。也就是说,创建一个定制的应用程序
类并使其成为单例。这将允许您从任何位置访问上下文
,但如果您尝试在长时间运行的辅助线程中使用它,也可能导致严重的内存泄漏。所以,如果你真的需要使用它,就要明智地使用它;-)
简单地说,Android系统的第一次迭代实际上默认提供了静态上下文。我还使用了一些当前的商业应用程序,它们使用应用程序Singleton,没有任何问题。所以这不是一个疯狂的想法。然而,要正确地解决问题,需要大量的自律
我使用的是非活动类,我想在/data/local/path中创建一个文件
生产硬件上没有可访问SAN根目录的/data/local/
目录
有一种/data/local/tmp/
似乎是世界可读和世界可写的。我不建议使用它,因为它对所有各方都是开放的,包括攻击者
有人能帮我怎么做到这一点吗
使用Java文件I/O,从新文件(“/data/local/tmp/welcome to Java.txt”)
不,我的意思是它对我有用,但我不想使用它。我不想触动我的活动文件,让它们将上下文传递给我的非活动文件。在不触动你的活动文件的情况下,你到底想如何运行你的程序?您需要创建它们,并且需要在其中一个中创建文件保存对象,这样您无论如何都可以触摸它们。不,我的意思是我不想编辑用于发送上下文的活动文件。我需要它们来运行我的应用程序。我使用AspectJ从活动文件中获取数据,并将其发送到需要写入内部存储器的非活动文件。我想在不编辑活动文件的情况下使用活动文件。我不知道您为什么要尝试这样做,但在Android中,如果没有上下文实例,则无法访问文件系统。你刚才所描述的似乎有点反模式:-(但请看我的编辑是的,如果我有“上下文”,我知道我的生活会是蛋糕上散步:P但无论如何,非常感谢你的建议和时间:)好的,我用了这个,但当我签入我的tmp文件夹时,没有创建任何文件。我正在使用我在问题(已编辑)中输入的代码@FAZ:我将从实际记录异常开始。/data/local/tmp/
可能仅可由adb shell
帐户写入,而不可由应用程序写入。这会让我有点吃惊,因为adb shell帐户在生产硬件上不像在模拟器上那样“特殊”。当我打印异常时,它说java.io.IOException:open failed:EACCES(权限被拒绝);在java.io.File.createNewFile(File.java:939)中,但我在清单文件中添加了必要的权限。@FAZ:“但我在清单文件中添加了必要的权限”--这里没有相关的权限元素。这不是外部存储。显然,/data/local/tmp/
是为adb shell
帐户读写的,但不是为应用程序读写的。在这种情况下,在/data/local/
树中的任何位置编写都不太可能起作用。非常感谢您的时间和帮助:)即使我不知道这个事实。你帮助我学习:)