在java中,当用户希望在C驱动器的根目录下保存文件时,如何显示消息

在java中,当用户希望在C驱动器的根目录下保存文件时,如何显示消息,java,swing,jfilechooser,Java,Swing,Jfilechooser,我使用JFileChooser在我的应用程序中保存了一个文件。我注意到JFileChooser在没有任何通知的情况下不会在C驱动器的根目录中保存文件。因此,每当用户希望在C驱动器的根目录下保存文件时,我都想向用户显示一条消息。我如何知道用户选择的目录是C驱动器的根目录。请帮助我。谢谢。您可以使用.getSelectedFile或.getSelectedFiles方法来获取所选文件。从文件中,您可以使用.getPath获取文件路径。此操作以字符串形式返回文件路径。现在,您可以应用条件,让您知道所选

我使用JFileChooser在我的应用程序中保存了一个文件。我注意到JFileChooser在没有任何通知的情况下不会在C驱动器的根目录中保存文件。因此,每当用户希望在C驱动器的根目录下保存文件时,我都想向用户显示一条消息。我如何知道用户选择的目录是C驱动器的根目录。请帮助我。谢谢。

您可以使用.getSelectedFile或.getSelectedFiles方法来获取所选文件。从文件中,您可以使用.getPath获取文件路径。此操作以字符串形式返回文件路径。现在,您可以应用条件,让您知道所选文件是否位于C:/drive中

即使用户也只选择目录,这种方法仍然有效。在这种情况下,您必须使用.getCurrentDirectory,这将返回用户当前所在的目录

小代码段:

JFileChooser myFileChooser = new JFileChooser();

if(myFileChooser.getCurrentDirectory().getPath().equals("C:/")){
   System.out.println("saving file here is not allowed");
}
您可以使用JFileChoosergetSelectedFile或JFileChoosergetSelectedFiles获取所选文件,然后将其与File.listRoots进行比较,以确定所选文件是否为根路径,类似于

JFileChooser fc = new JFileChooser();
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fc.showOpenDialog(null);
File selected = fc.getSelectedFile();
for (File f : File.listRoots()) {
    if (selected.equals(f)) {
        System.out.println("Is root path");
    }
}

例如。

很好的方法,我对此有疑问,for循环应该是File.listRoots还是selected.listRoots?为什么我们要为每一个选定的文件检查它呢?只检查一个就行了?因为我们将无法同时从不同的目录中选择多个文件,我猜。只是本能:|@VamshiAlladi File.listRoots和seletedFile.listToora是一样的,因为listRoots是一个静态方法。本例仅针对单个文件进行检查,正如您所说,很难选择更多的非根目录。这也是跨平台的,并且不假设根文件实际是谁想要强调否决投票的原因?或者我们应该只是猜测你在推理而不学习任何东西吗?看,当我用c替换c:/时,这是有效的:\\