java.io.File.isFile上的映射驱动器文件返回false,但是cmd是能够列出内容

问题描述

创建映射驱动器[Z:],这是由命令

针对IBMi共享创建

NET USE Z:\ IBMiMachine \ PROD / USER:USER1 *******

成功创建的驱动器。

然后试图列出所有文件(例如.PHP / .TXT / html的等)存在映射的驱动器下,通过简单的Java程序(使用Java 7 IO API,以及java类驻留在一个可运行的罐 myjar.jar )通过运行命令

Java的罐子myjar.jar Z:

因此注意到的 java.io.File.isFile()针对各种文件返回假:

File: 'Z:\ABC\20100709\Info.PHP'
isSymbolicLink -- false
isDirectory -- true
exists: true
is file: false
can read: true
can write: true
is hidden: false


File: 'Z:\ZYZ\20100607\intranet\Int.PHP'
isSymbolicLink -- false
isDirectory -- true
exists: true
is file: false
can read: true
can write: true
is hidden: false

还在 java.io.File.isDirectory()也说那些目录;但是,这些文件内容可以看到命令由命令提示“CAT ”。

我的Java程序代码是这样的:

private static int counter = 1;
public static void main(String[] args)
{
    if (Utils.length(args) == 0)
    {
        print("Either passed argument was empty or null: " + Arrays.toString(args));
        return;
    }

    print("Passed argument was: " + Arrays.toString(args));

    doFile(new File(args[0]));
}

private static void doFile(File folder)
{
    if (folder.isDirectory())
    {
        showFileAttributes1(folder);
        showFileAttributes2(folder);

        String files[] = folder.list();
        int length = (files == null) ? 0 : files.length;
        for (int i = 0; i < length; i++)
        {
            doFile(new File(folder,files[i]));
        }
    }
    else if (folder.isFile())
    {
        showFileAttributes1(folder);
        showFileAttributes2(folder);
    }
}

private static void showFileAttributes1(File folder) throws IOException
{
   print("");
   print(" " + counter++ + ". File: '" + folder.getPath() + "' ---------");
    Map<String,Object> fileAttributes = Files.readAttributes(folder.toPath(),"*");
    Iterator<String> iterator = fileAttributes.keySet().iterator();
    while (iterator.hasNext())
    {
        String key = iterator.next();
        print(key + " -- " + fileAttributes.get(key));
    }
}

private static void showFileAttributes2(File file) throws IOException
{
    print("exists: " + file.exists());
    print("is file: " + file.isFile());
    print("can read: " + file.canRead());
    print("can execute: " + file.canExecute());
    print("can write: " + file.canWrite());
    print("is hidden: " + file.isHidden());
    
    Path filePath = Paths.get(file.getAbsolutePath());

    //Is file readable
    boolean isReadable = Files.isReadable(filePath);
    print("Is file readable: " + isReadable);

    //Is file writable
    boolean isWritable = Files.isWritable(filePath);
    print("Is file writable: " + isWritable);

    //Is file executable
    boolean isExecutable = Files.isExecutable(filePath);
    print("Is file executable: " + isExecutable);
}

private static void print(String message)
{
    System.out.println(message);
}

什么方法可采取克服爪哇问题?

注意:我对那台机器/文件夹相同的完全访问权限,因为通过的 ROBOcopY 命令我能够映射驱动器的完整的文件夹结构复制到我的本地驱动器,然后该文件夹上没有 Java API 问题

ROBOcopY Z:C:\ * MYSOURCE .PHP / E /log:log.txt

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...