0

在 ubuntu 中,isFile()isDirectory()不能完美地工作。我使用这段代码来确定某个东西是文件还是目录:

boolean fileName= file.getName().lastIndexOf('.') == -1;

但问题是我创建了一个名为bhargav.panchal. 使用上面的函数,这个文件夹被认为是一个文件,而不是一个文件夹。

File file=new File("/home/asd/My_Shared_File/bhargav.panchal");

if(file.exists()){
    if(!file.isDirectory()) {
        Toast.makeText(activity, "This is File", Toast.LENGTH_SHORT).show();
    } else {
        Toast.makeText(activity, "This is Directory", Toast.LENGTH_SHORT).show();
    }
} else {
    Toast.makeText(activity, "File or Directory doesn't exist.", Toast.LENGTH_SHORT).show();
}

在这种情况下,isDirectory()andisFile()方法总是返回 false。

4

2 回答 2

3

不,你在某个地方错了。相反,您无法使用 DVM 访问外部环境。

原因:基于操作系统级别的安全性,应用程序之间不可能相互干扰,Dalvik VM 仅限于单个操作系统进程,Dalvik 本身不关心运行时安全性。尽管不依赖 Dalvik 的安全性,但有趣的是,大多数标准 Java 安全类仍保留在 Android 发行版中。其中包括 java.lang.SecurityManager 和 java.security 包中的一些类。在标准 Java 环境中,SecurityManger 扮演的角色类似于 Android 中的 OS 进程级安全性。SecurityManager 通常控制对 JVM 外部资源的访问,例如文件、进程和网络. 在 Android 发行版中,标准的安全框架显然是为应用程序在其内部使用的,own application space既没有完全实现也没有配置(不存在 java.policy 文件)以实现进程间安全。

于 2012-04-17T06:12:10.140 回答
1

代替

       if(file.isDirectory()){
           Toast.makeText(activity, "This is File", Toast.LENGTH_SHORT).show();                    
       } else {
           Toast.makeText(activity, "This is Directory", Toast.LENGTH_SHORT).show();
       }

在这

        if(!file.isDirectory()){
            Toast.makeText(activity, "This is File", Toast.LENGTH_SHORT).show();                    
        } else {
            Toast.makeText(activity, "This is Directory", Toast.LENGTH_SHORT).show();
        }
于 2012-04-09T13:07:31.530 回答