【问题标题】:How can I check isFile() or isDirectory() Function in Java in Ubuntu?如何在 Ubuntu 中检查 Java 中的 isFile() 或 isDirectory() 函数?
【发布时间】:2012-04-19 17:25:03
【问题描述】:

在 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()isFile() 方法总是返回 false。

【问题讨论】:

  • 您在 Ubuntu 桌面上的 Android 模拟器上运行它,对吧?模拟器有自己的文件系统,它看不到你的 Ubuntu 桌面的文件系统,所以你的 Android 应用根本看不到 /home/volansys11/My_Shared_File/bhargav.panchal
  • isFile() 和 isDirectory() 在 Ubuntu 上正常工作。错误必须在您的代码中。检查您的 JVM 是否可以访问目录 /home/volansys11/My_Shared_File/
  • 您有什么证据表明isFile()isDirectory() 无法正常工作? isFile()isDirectory() 在文件不存在或由于其他原因无法访问应用程序时都返回 false 是完全正确的。

标签: java android ubuntu


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    替换

           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();
            }
    

    【讨论】:

    • 哪个条件返回假?您检查它是否存在的那个,或者您检查它是否是一个目录的那个?
    • 在ubuntu或linux操作系统中使用此功能。
    猜你喜欢
    • 2012-01-28
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 2013-06-02
    相关资源
    最近更新 更多