Новичок
Профиль
Группа: Участник
Сообщений: 1
Регистрация: 20.4.2007
Репутация: нет Всего: нет
|
нашел подходящую тему, новою создавать не хотел. нужно релизовать программу поиска файлов и папок на яве. я написал рекурсивную ф-цию прогулки по ФС, но она толком не работает: некоторые папки видит и сканирует их полностью, некоторые игнорирует. в чем проблемма? исходник проги: | Код | //public package main_package;
//import input_output_package.*; import java.awt.*; import java.awt.event.ActionListener; import javax.swing.*; import java.awt.event.*; import java.io.*;
/**************************************************/ public class WindowApp extends JFrame { //public String result = null; private static final long serialVersionUID = 1L; int count_clicked = 0; public WindowElements we1 = new WindowElements(); /***construct*************/ public WindowApp(String s){ super(s); setSize(700, 350); setVisible(true); //setResizable(false); Container c = getContentPane(); c.setBackground(Color.lightGray); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//close window /*************distenation Panels******************************************************/ we1.pn1.setLayout(new GridLayout(1, 3, 20, 20)); we1.pn2.setLayout(new GridLayout(2, 1, 2, 2)); we1.pn3.setLayout(new GridLayout(4, 1, 10, 2)); we1.pn3_1.setLayout(new GridLayout(1, 2, 20, 20)); //we1.pn3_2.setLayout(new FlowLayout()); /*************************other operations*****************************************/ we1.b2.setEnabled(false); /*************************add components*******************************************/ we1.pn1.add(we1.b1); we1.pn1.add(we1.b2); we1.pn1.add(we1.b3); we1.pn2.add(we1.lb1); we1.pn2.add(we1.tf1); we1.pn3.add(we1.lb3); we1.pn3_1.setLayout(null); we1.pn3_1.add(we1.tf2); we1.pn3_1.add(we1.bt_for_choose); we1.pn3.add(we1.pn3_1); we1.pn3.add(we1.lb2); we1.pn3.add(we1.ta1); //we1.pn3.add(we1.jsp);разобратся!!!!!!!!!! //we1.ta1.setT /****************************add to main container***********************************/ c.add(we1.pn1, BorderLayout.SOUTH); c.add(we1.pn2, BorderLayout.NORTH); c.add(we1.pn3); //c.add(we1.jsp); we1.bt_for_choose.setBounds(600, 10, 100, 32); we1.tf2.setBounds(0, 10, 590, 30); repaint(); } /*********************************************************************************************/ public class WindowElements { JLabel lb1, lb2, lb3; JTextField tf1, tf2; JTextArea ta1; JScrollPane jsp; JButton b1, b2, b3, bt_for_choose; /**********************Panels************************************/ JPanel pn1, pn2, pn3, pn3_1; /***construct*************/ public WindowElements(){ b1=new JButton("поиск"); b2=new JButton("отмена поиска"); b3=new JButton("Закрыть"); b3.setToolTipText("выйти из программы и закрыть окно"); bt_for_choose=new JButton("<html>выбрать, <p>где искать");/*button for choosing*/ /*way for searching*/ pn3 = new JPanel(); pn3_1 = new JPanel(); pn2 = new JPanel(); pn1 = new JPanel(); jsp = new JScrollPane(ta1, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); lb1 = new JLabel("Файл или папку которую ищем"); lb2 = new JLabel("Результаты поиска:"); lb3 = new JLabel("Диск или директория, где ищем:"); ta1 = new JTextArea(5, 30); ta1.setEditable(false); ta1.setBorder(BorderFactory.createLineBorder(Color.black, 3)); tf1 = new JTextField(); tf2 = new JTextField("Введите путь где искать, или выберите с помощью кнопки"); tf2.setToolTipText("Введите путь где искать, или выберите с помощью кнопки"); /**************adding ActionListener*************************************/ b1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ b2.setEnabled(true); b1.setEnabled(false); String s1 = tf1.getText(); String s2 = tf2.getText(); if(s1.equals("")){ JOptionPane.showMessageDialog(null, "введите что искать!"); b1.setEnabled(true); b2.setEnabled(false); } else if(s2.equals("") || s2.equals("Введите путь где искать, или выберите с помощью кнопки")){ JOptionPane.showMessageDialog(null, "введите где искать!"); b1.setEnabled(true); b2.setEnabled(false); } else{ //try{ new input_output(s1, s2); //result = input_output.this.returned_method(res); /*} catch(NullPointerException npe){ JOptionPane.showMessageDialog(null, "заданый путь указан не правильно" + " или не существует"); b1.setEnabled(true); b2.setEnabled(false); }*/ } } }); b2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ b1.setEnabled(true); b2.setEnabled(false); } }); b3.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ System.exit(0); } }); bt_for_choose.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ new Common_dialog_window(); } }); tf2.addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent e){ if(count_clicked==0) tf2.setText(""); count_clicked++; } }); } } /******************************************************************/ class Common_dialog_window{ public Common_dialog_window(){ JFileChooser fch = new JFileChooser(); fch.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); fch.setMultiSelectionEnabled(false); int state = fch.showOpenDialog(null); File f = fch.getSelectedFile(); //System.out.println(f); if(f!=null && state == JFileChooser.APPROVE_OPTION){ //JOptionPane.showMessageDialog(null, f.getPath()); we1.tf2.setText(f.getPath()); } } } /******************************************************************/ // package input_output_package;
//import java.io.File; //import main_package.WindowApp;
public class input_output { //int a; /*public void returned_method(String res){ //WindowApp.this.we1.ta1.setText(res); //return res; }*/ public input_output(String s1, String main_path) { String str = null, result = null; result = walk_on_fs(main_path, str, s1); //returned_method(result); System.out.println("РЕЗУЛЬТАТ - "+result); } /********************************************************************************/ public String finding_func(String one_name_of_all, String name_of_searching, String path){ int a; String result = null; a = name_of_searching.indexOf(one_name_of_all); //return a; if (a == 0){ result = one_name_of_all; we1.ta1.append("похожий(ая)файл/папка "+name_of_searching+ " найден в папке: "+path+"\n"); } return result; } /**********************************************************************/ public String walk_on_fs(String path, String list , String name_of_searching){ String litlepath, result = null; File f = new File(path); String[] list_files = f.list(); for(int j=0;j<list_files.length; j++) System.out.println("список файлов и папок в папке: "+path+": " +list_files[j]); for (int i = 0; i < list_files.length; i++){ litlepath=path+File.separator+list_files[i]; File f2 = new File(litlepath); System.out.println("вход в "+(f2.isFile()?"файл: ":"папку: ")+list_files[i]+"\n\tПуть: "+litlepath); if(f2.isDirectory()){ result = finding_func(list_files[i], name_of_searching, litlepath); walk_on_fs(litlepath, list_files[i],name_of_searching); } else if(f2.isFile()) result = finding_func(list_files[i], name_of_searching, litlepath); } return result; } }
/********************************************************************/ public static void main(String[] args) { new WindowApp("chups finder"); } }
|
З.Ы. не ругайте пожалуста за неоптимизированый код, я начал учить язык недавно.
|