我能够在SAME活动中编写然后读取文本文件,但在从另一个Activity写入文本文件后,我无法读取该文本文件。
例如: 活动A 创建并写入文本文件。 活动B 读取该文本文件。
我使用此代码写入活动A :
中的文本文件FileOutputStream fos = null;
OutputStreamWriter osw = null;
try
{
fos = openFileOutput("user_info.txt", Context.MODE_WORLD_WRITEABLE);
osw = new OutputStreamWriter(fos);
osw.write("text here");
osw.close();
fos.close();
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
然后我使用此代码尝试阅读活动A 创建的同一文本文件,但我得到FileNotFoundException
:
try
{
FileInputStream fis = openFileInput("user_info.txt");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader buff = new BufferedReader(isr);
String line;
while((line = buff.readLine()) != null)
{
Toast.makeText(this, line, Toast.LENGTH_LONG).show();
}
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
有谁知道为什么我会收到FileNotFoundException
?
这是路径问题吗?
答案 0 :(得分:0)
不知道如何构建你的应用程序,但是,你得到的错误看起来像路径问题,你确定两个活动都在同一个文件夹中吗? 如果没有,您需要为文本文件或相对路径(如:“../ text.txt”)设置一个绝对路径(如:“/ home / user / text.txt”)。 如果您不确定,请尝试使用某些命令(如
)打印活动的当前路径new File(".").getAbsolutePath();
而且,虽然我不能说我是Android的专家,但你确定你的文件需要Context.MODE_WORLD_WRITEABLE吗?如果没有其他应用程序正在读取或写入它,那么它就没有必要了,对吧?
答案 1 :(得分:0)
这肯定是一个路径问题。 你可以写这样的
fpath=Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+"yourdirectory";
File custdir=new File(fpath);
if(!custdir.exists())
{
custdir.mkdirs();
}
File savedir=new File(custdir.getAbsolutePath());
File file = new File(savedir, filename);
if(file.exists())
{
file.delete();
}
FileOutputStream fos;
byte[] data = texttosave.getBytes();
try {
fos = new FileOutputStream(file);
fos.write(data);
fos.flush();
fos.close();
Toast.makeText(getBaseContext(), "File Saved", Toast.LENGTH_LONG).show();
finish();
} catch (FileNotFoundException e) {
Toast.makeText(getBaseContext(), "Error File Not Found", Toast.LENGTH_LONG).show();
Log.e("fnf", ""+e.getMessage());
// handle exception
} catch (IOException e) {
// handle exception
Toast.makeText(getBaseContext(), "Error IO Exception", Toast.LENGTH_LONG).show();
}
你可以像
一样阅读String locatefile=Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+"yourdirectory"+"/filename";
try {
br=new BufferedReader(new FileReader(locatefile));
while((text=br.readLine())!=null)
{
body.append(text);
body.append("\n");
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}