【问题标题】:Can't Get Java Program to List Files In A Specified Directory无法让 Java 程序列出指定目录中的文件
【发布时间】:2017-11-19 17:57:57
【问题描述】:

我正在尝试编写一个程序(用于学校作业),该程序将采用命令行参数来指定一个目录,暂时只需打印出目录中的文件。我实际上一直在寻找各种答案并尝试了几个小时,只是不知道该怎么做。下面,您将找到我当前的代码。当我打开 CMD 并输入 java DirectoryFiles c:\ 时。

我收到Error, could not find or load main class DirectoryFiles。我刚刚使用c:\ 看看是否可以打印出任何目录。

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class DirectoryFiles
{

    /**
     * Gets command line argument for directory to be used in program.
     *
     * @param args
     */
    public static void main(String[] args)
            throws IOException, ClassNotFoundException
    {

        String path = args[0];
        File dir = new File(path);
        FileInputStream fis = new FileInputStream(dir);
        if ((dir).isDirectory())
        {
            File[] files = dir.listFiles();

            System.out.println(files);
        }
    }
}

【问题讨论】:

  • 在输入命令之前是否将 cmd 中的目录更改为项目/源目录?
  • 1) fis 是不必要的 2) dir 周围的括号不需要 3) 在数组上调用 println 只会显示 [Ljava.io.File;@memaddr,而不是元素本身。 4) 你是如何编译/运行你的代码的?代码本身应该(几乎)可以工作;这不是这里的问题。
  • 感谢您的快速回复!我还没有将目录更改为我的源目录...现在就尝试一下。我正在使用 eclipse 编译代码。
  • @HTNW 感谢您的提示!我删除了 fis,从 dir 中删除了括号,并遍历了数组中的每个索引。我还在 CMD 中运行 .class 文件而不是 .java 文件,现在,它就像一个魅力! :)

标签: java serialization directory command-line-arguments


【解决方案1】:

很可能您只有 source 文件(您没有编译它)。

记住:

  • Java 不是源文件的解释器。
  • java 命令尝试运行现有的 java

所以你必须从将源代码编译成 Java 类开始。 然后你可以用java 命令运行它。

【讨论】:

  • 天哪!我一直在尝试运行 DirectoryFiles.java 文件。当我将 DirectoryFiles.class 文件移动到 c:\ 然后输入 c:\> java DirectoryFiles f:\ 它运行了!!!!!!所以,如果我错了,请纠正我,但我了解到你可以在 eclipse 或 netBeans 或其他任何东西中运行 .java 文件,但是当你想从 CMD 运行程序时,你需要使用 .class 文件从你的java程序。这是正确的吗?
  • 从 Eclipse 运行 .java 文件 是“概念上的快捷方式”。实际上,Eclipse 首先编译您的源文件(如果项目更复杂,则编译所有其他文件)。只有在那之后它才会运行程序。因此 Eclipse 将您从手动可重复操作中解脱出来。但是,当您尝试从命令行重复整个过程时,没有“秘密助手”可以代替您执行这些操作。然后你必须自己做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多