Java 从内部存储器读写

Java 从内部存储器读写,java,android,file-io,Java,Android,File Io,我在尝试读取文件时遇到此异常 java.io.FileNotFoundException:/data/data/../files 我使用这种方法是因为它可以在读取文件时处理Unicode文本 public void save(String string ) { String filename = "main"; FileOutputStream outputStream; try { outputStream = openFileOutput(filename, Context.MO

我在尝试读取文件时遇到此异常

java.io.FileNotFoundException:/data/data/../files

我使用这种方法是因为它可以在读取文件时处理Unicode文本

public void save(String string )
{

String filename = "main";


FileOutputStream outputStream;

try {
  outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
  outputStream.write(string.getBytes());
  outputStream.close();
} catch (Exception e) {
  e.printStackTrace();
}
}
public String read()
{
    try
    {

        Reader readerUnicode =
                new InputStreamReader(new FileInputStream(getFilesDir()), Charset.forName("UTF-16"));
                int e = 0;
                String f="";
                while ((e = readerUnicode.read()) != -1) {
                // cast to char. The casting removes the left most bit.
                 f = f+Character.toString((char) e);
                System.out.print(f);
                }

                return f;
    }
    catch(Exception e)
    {

        return e+"";
    }

}
如何检索内部保存路径


谢谢

您使用的是
getFilesDir()
,但没有设置实际的文件名。只是目录路径

尝试在中添加文件名。另外,您可能应该在保存和加载路径中添加一个扩展名,如
.txt

 new InputStreamReader(new FileInputStream(getFilesDir() + "/" + filename ), Charset.forName("UTF-16"));
并将
filename
更改为更合理的格式

String filename = "main.txt";
您还可以/应该在访问文件之前检查文件是否存在。(尽管你还是试着接球)


你能举例说明plzI拥有的更多信息吗,请看下面我的回答:)@doomsnight-不,这不是重复的。你链接的目标是一个非常混乱的问题,海报上写的是“内部”,但实际上是“外部”的意思。@ChrisStratton我注意到了变化,它是从这个看起来很相似的链接来的。他们对可能出现的问题都有很好的想法。我不确定
模式\u PRIVATE
是否存在问题。我很高兴从任何人那里看到解决方案,尽管我确信他至少丢失了文件名。@Doomsnight-当某些东西仅仅“对可能出现的问题有了好的想法”时,人们不会提出重复的建议。重复项用于已知问题(或至少解决方案)与事实相同的情况。相同错误java.io.FileNotFoundException:/data/data/asia.tv/files/main:open failed:enoint(无此类文件或目录)where asia.tv是我的主程序包的名称,但我是从另一个名为news@user3027345尝试设置扩展名的变体。你确定文件确实存在吗?。。。在加载之前,您是否在任何时候调用了
save()
。我按照上面的主代码进行了保存,但我使用了以下代码:尝试{FileInputStream fin=openFileInput(“main”);int c;String temp=“”;while((c=fin.read())!=-1){temp=temp+Character.toString((char)c);}返回temp;}捕获(异常e){返回“否”}它工作了,但我的主要问题是unicode读取……但无论如何,我不知道它在哪里保存数据data@user3027345是的,
openFileInput
为您预先设置文件夹位置。使用
FileInputStream
时需要使用
getfiledir
@user3027345乐意帮助:)
File file = new File(getFilesDir() + "/" + filename);
if(!file.exists()) 
   return "";