Java 检查JList中是否存在文件

Java 检查JList中是否存在文件,java,file,jlist,Java,File,Jlist,我在JFileChooser的JList中添加了一些文件。我正在添加一个名为“CHECK”的新按钮,单击该按钮时,会告知JList中是否存在特定文件(在已添加的文件中)。如果你们能告诉我这一步的正确步骤,那就太好了 提前谢谢你 这是我目前的代码 final JFileChooser fileChooser = new JFileChooser(); fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DI

我在JFileChooser的JList中添加了一些文件。我正在添加一个名为“CHECK”的新按钮,单击该按钮时,会告知JList中是否存在特定文件(在已添加的文件中)。如果你们能告诉我这一步的正确步骤,那就太好了

提前谢谢你

这是我目前的代码

            final JFileChooser fileChooser = new JFileChooser();
    fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
    fileChooser.setMultiSelectionEnabled(true);
    getContentPane().add(fileChooser, "cell 0 0 3 9");

    JScrollPane scrollPane = new JScrollPane();
    getContentPane().add(scrollPane, "cell 10 1 3 8,grow");

    vector = new Vector<File>();
    final JList list = new JList(vector);
    scrollPane.setViewportView(list);

    JPanel panel = new JPanel();
    getContentPane().add(panel, "cell 3 4 7 1,grow");

    JButton btnNewButton = new JButton("Add Files");
    btnNewButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            for (File file : fileChooser.getSelectedFiles()) {
                        vector.add(file);
                        System.out.println("Added..!!");
                }
                list.updateUI();

            }
    });
    panel.add(btnNewButton);

    JButton btnNewButton_1 = new JButton("Remove Files");
    btnNewButton_1.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            if(list.getSelectedIndices().length > 0) {
                  int[] selectedIndices = list.getSelectedIndices();
                  for (int i = selectedIndices.length-1; i >=0; i--) {
                        vector.removeElementAt(i);
                        System.out.println("Removed..!!");
                  } 
                   }
                    list.updateUI();

        }   
        });
    panel.add(btnNewButton_1);

    JButton btnNewButton_2 = new JButton("Check For Files");
    btnNewButton_2.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            String name = "";
            if(list.getSelectedIndices().length > 0 ) {
                       //// to check if a file exists /////
            }
            }
             });

    panel.add(btnNewButton_2);
final JFileChooser fileChooser=new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES\u和\u目录);
fileChooser.setMultiSelectionEnabled(true);
getContentPane().add(文件选择器,“单元格0 0 3 9”);
JScrollPane scrollPane=新的JScrollPane();
getContentPane().add(滚动窗格,“单元格10 1 3 8,增长”);
向量=新向量();
最终JList列表=新JList(矢量);
scrollPane.setViewportView(列表);
JPanel面板=新的JPanel();
getContentPane().add(面板,“单元格3 4 7 1,增长”);
JButton btnNewButton=新JButton(“添加文件”);
addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
对于(文件:fileChooser.getSelectedFiles()){
添加(文件);
System.out.println(“添加..!!”;
}
list.updateUI();
}
});
面板。添加(BtnewButton);
JButton btnNewButton_1=新JButton(“删除文件”);
btnNewButton_1.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
if(list.getSelectedIndices().length>0){
int[]selecteddinces=list.getselecteddinces();
for(int i=selecteddinces.length-1;i>=0;i--){
向量移除元素(i);
System.out.println(“删除..!!”;
} 
}
list.updateUI();
}   
});
面板。添加(btnNewButton_1);
JButton btnNewButton_2=新JButton(“检查文件”);
btnNewButton_2.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件e){
字符串名称=”;
if(list.getSelectedIndices().length>0){
////检查文件是否存在/////
}
}
});
面板。添加(btnNewButton_2);

Vector有一个contains方法,您可以使用该方法:

if(vector.contains(file)){
   //Vector has the file
}
  • 请对var类型使用Collections框架的
    列表
    ,对具体类使用
    ArrayList
    <代码>矢量自Java1.2以来已成为过去
  • 迭代选定文件,检查两端的规范路径:
  • final File toCheck = fileToCheckInList.getCanonicalFile();
    for (File file : fileChooser.getSelectedFiles())
      if (file.getCanonicalFile().equals(toCheck)) return true;
    

    如果(file.isExists())
    不起作用?但这只是检查一个文件是否存在,一般来说..我想知道一个文件是否存在于JList中,因为我已经在第一步添加了一些文件ih,如果不显示一些代码,我们很难提供帮助。你能发布你到目前为止尝试/拥有的吗?我已经添加了我当前的代码。请查看..为了更快地获得更好的帮助,请发布一个。我认为只有当文件不包含完整路径、仅包含文件名或包含字符串值而不是FileYes时,才有可能实现此功能..您是对的。我可以检查是否存在,但是在这种情况下,我必须指定整个路径作为输入,如果我不知道它所在的路径怎么办?例如,我指定了like;File File=新文件(“H:\\abc.txt”);如果(vector.contains(file)){--}感谢您的建议。但即使在这种情况下,我也必须指定路径,只有这样它才能正确地检查是否存在。如果我以前不知道路径(文件的路径),该怎么办?我们现在开始讨论您没有提供详细信息的细节。您使用什么字符串进行搜索,以及列表中有什么字符串?(当我说字符串的时候,我用得很松散,我知道里面有文件)。我总共添加了3个文件,2个xml文件是一个十六进制文件,我想从中搜索是否存在特定的xml文件。不,请给出一个用于构造这些文件的特定字符串的示例,或者更一般地说,调用
    toString
    会产生的字符串。请用这些更新您的问题。