【问题标题】:How can I know a file exists or not? [closed]我怎么知道文件是否存在? [关闭]
【发布时间】:2012-09-21 15:09:45
【问题描述】:

我在android上写了这段代码来了解.txt文件是否存在。

    File file_a =new File("a.txt");

 InputStream in3 = getResources().openRawResource(R.raw.b);
         FileOutputStream out3 = null;


        try {   out3=openFileOutput("a.txt",Context.MODE_WORLD_WRITEABLE);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
         byte[] buff3 = new byte[1024];
         int read3 = 0; 

         try {
            while ((read3 = in3.read(buff3)) > 0) {
               out3.write(buff3, 0, read3);
            }
         } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace(); 
        } finally {
              try {
                in3.close();
                out3.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

         }

    boolean a=file_a.exists();

它总是返回false

我该如何解决这个问题?

【问题讨论】:

  • 您是否有权读取文件存储位置?
  • 我怀疑你是否被允许在你的安卓设备的根目录上写。因此返回值是正确的。
  • 我不明白?文件存在。我读了其中的值。但是布尔a是假的吗?那个怎么样?文件存在

标签: java android android-file file-exists


【解决方案1】:

并不总是返回false。

File#exists() 当且仅当此抽象路径名表示的文件或目录存在时返回 true;否则为假。

您正在创建一个新文件,那么您应该调用File#createNewFile,如果创建成功则返回 true,否则返回 false。

In 文件已经创建,然后您可以检查File#getAbsolutePath() 以验证文件的绝对路径是否相同。

【讨论】:

  • 那么我怎么知道文件是存在的
【解决方案2】:

您根本没有创建文件。您所做的只是实例化一个文件句柄。

【讨论】:

  • 编辑我已经创建的问题,但它说没有文件但它存在
【解决方案3】:

如果File不存在,你可以创建它

使用这个

if(!file.exist()){
file.createNewFile( ); 
} 

之后,当您调用file.exist(); 时,它将返回true

【讨论】:

    【解决方案4】:

    我找到了解决方案。我尝试了读取文件,如果它获得了不存在的 catch 块。感谢大家。

    try {
            FileInputStream deneme=openFileInput("a.txt");
        } catch (FileNotFoundException e1) {
            // TODO Auto-generated catch block
             kopyala();
            e1.printStackTrace();
        }
    

    【讨论】:

    • 这是错误的。您不应该首先尝试访问根目录。使用您应用的内部存储空间或 SD 卡。
    • 但这可以在我的手机上使用吗?我的手机没有root设备?
    • 我并不是说它不起作用。我是说不应该这样做。郑重声明,它并不适用于所有设备。
    • 因为你做错了。一些设备只允许访问应该是 root 的区域。例如,我的 Optimus 允许我访问帧缓冲区,而我的 Nexus 不允许,因为帧缓冲区应该受到保护。
    • so 如何在哪里创建文件?给我路径,但它必须是手机内存
    【解决方案5】:

    您需要提供文件的路径以及文件名。假设文件在你的 sd 卡的根目录下:

    File file_a = new File(Environment.getExternalStorageDirectory() + "/a.txt"); 
    boolean a=file_a.exists();
    

    如果它在子目录中,则添加路径的其余部分:

        File file_a = new File(Environment.getExternalStorageDirectory() + "yourpath/a.txt"); 
    

    如果您已将文件写入内部存储,它位于“data/data/your.package.name”路径中的某处,请使用该路径。

        File file_a = new File(Environment.getExternalStorageDirectory() + "date/data/your.package.name/a.txt"); 
    

    【讨论】:

    • 您可以使用new File(String directory, String filename)删除串联
    猜你喜欢
    • 2011-11-05
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    相关资源
    最近更新 更多