2012-09-30 164 views
0

我在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

我该如何解决这个问题?

+3

您是否有权限读取存储文件的位置? –

+0

我怀疑你是被允许在你的android设备的根目录上写的。因此返回的值是正确的。 – WarrenFaith

+0

我不明白?文件存在。我读了它的值。但布尔a是错误的?那个怎么样?文件存在 –

回答

0

我发现solution.I试图读取文件,如果其得到它不存在的catch块。感谢大家。

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

这是错误的。你不应该试图首先访问根目录。使用您的应用程序的内部存储或SD卡。 –

+0

但这是在我的手机上工作?和我的手机不是根植设备? –

+0

我并不是说它不起作用。我说这不应该做。而且为了记录,它不适用于所有设备。 –

0

它并不总是返回false。

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

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

在文件已经创建,那么你可以检查File#getAbsolutePath()来验证文件的绝对路径是否相同。

+0

所以我怎么能理解文件存在 –

1

您还没有创建文件。你所做的就是实例化一个文件句柄。

+0

编辑我的问题我已经创建,但它说没有文件,但它存在 –

1

您可以创建File如果使用这种

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

不存在

当你调用file.exist();它将返回true

0

您需要提供文件的路径以及文件名。假设该文件是在根目录下有你的SD卡上:如果你写的文件导入到内部

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

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

如果是在一个子目录,添加路径的其余部分存储,它在“data/data/your.package.name”路径中的某处,使用它。

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

不是我的文件不是sdcard –

+0

你可以通过'new File(String directory,String filename) – mrres1

相关问题