在Android中向内部存储器写入和读取字符串
我想写一个文件,然后从中读取。在使用openFileOutput(..,..)方法时,我发现这个方法并没有定义,因为它是一个抽象方法。然后我尝试使用getBaseContext()传递上下文;警告已关闭,但我无法读取输出结果。我还尝试将上下文作为参数传递到构造函数中,但这也没有帮助。我想编写静态方法,这样我就不必每次都实例化类,静态不是原因,因为我也尝试过不使用它。下面给出了代码片段 即使在使用内部存储时,我也需要指定任何路径吗? 在内部存储器上写入文件是否需要任何权限?(我已包括在外部存储器上写入的权限) read方法中的return buffer.toString()解决了该问题。 谢谢Stefan 在内部存储器上写入文件是否需要任何权限 你可能会看到一些帖子说要使用“android.permission.WRITE\u INTERNAL\u STORAGE”在Android中向内部存储器写入和读取字符串,android,fileoutputstream,file-io,Android,Fileoutputstream,File Io,我想写一个文件,然后从中读取。在使用openFileOutput(..,..)方法时,我发现这个方法并没有定义,因为它是一个抽象方法。然后我尝试使用getBaseContext()传递上下文;警告已关闭,但我无法读取输出结果。我还尝试将上下文作为参数传递到构造函数中,但这也没有帮助。我想编写静态方法,这样我就不必每次都实例化类,静态不是原因,因为我也尝试过不使用它。下面给出了代码片段 即使在使用内部存储时,我也需要指定任何路径吗? 在内部存储器上写入文件是否需要任何权限?(我已包括在外部存储器上
);“写入内部存储”您想在read()中返回buffer.toString()!(顺便说一句,“String Read;”似乎在您的代码段中丢失了,但是您不应该使用大写非静态变量。)那么我该怎么做呢?代码段可能会有帮助。返回buffer.toString()作为read()方法的最后一行。并在while循环之前添加“stringread;”,以定义“Read”变量。你应该使用小写字母,例如字符串行;而((line=reader.readLine())!=null)buffer.append(line+“\n”);谢谢实际上我在我的类中将Read定义为一个静态变量。很抱歉让这个线程在很长一段时间后再次激活。我从
asset
文件夹中读取一个文件,然后使用FileOutputStream
编写该文件。我的问题是FileOutputStream
保存的文件的路径是什么。
public static void write (String filename,Context c,String string) throws IOException{
try {
FileOutputStream fos = c.openFileOutput(filename, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static String read (String filename,Context c) throws IOException{
StringBuffer buffer = new StringBuffer();
FileInputStream fis = c.openFileInput(filename);
BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
if (fis!=null) {
while ((Read = reader.readLine()) != null) {
buffer.append(Read + "\n" );
}
}
fis.close();
return Read;
}