итак, продолжим (перерыв работе закончен)
Написала следующий код:
Код | import projectFifes.*;
public class FileManager { public static void main(String[] args){ WindowCreate.create(); } }
|
Код | public class WindowCreate { public static void window() { JFrame frame = new JFrame("Multimedia Blooghound"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(new JLabel(" Choose logic disk for searching multimedia files:"), BorderLayout.NORTH); frame.setSize(250, 400); frame.setLocation(200, 100); GridLayout frameTab = new GridLayout(1,File.listRoots().length); frameTab.setHgap(5); frameTab.setVgap(5); JPanel panel = new JPanel(); panel.setLayout(frameTab);
panel.setBorder(new EmptyBorder(5,5,5,5)); for (final File f : File.listRoots()) { //описываем поиск дисков на компьютере, //создание кнопок и выполнение действий //для каждой из них в случае нажатия JButton diskBtn = new JButton("Disk " + f); panel.add(diskBtn); //привязка вызова нового окна со списком файлов по нажатию кнопки diskBtn.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg) { listFrame(f); } }); } frame.add(panel); frame.setResizable(false); //фиксирует размер окна, окно появляется неизменяемым frame.pack(); frame.setVisible(true); } public static void create() { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { window(); } }); } public static void emptyDiskErr(File f){ JDialog fr = new JDialog(); JDialog frame = new JDialog(fr, "Error! Problems with disk " + f); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setSize(300, 100); frame.setLocationRelativeTo(null); JPanel panel = new JPanel(); panel.setBorder(new EmptyBorder(5,23,23,5)); panel.add(new JLabel("Logic disk is empty or was unmounted!!!")); frame.setResizable(false); frame.add(panel); frame.setVisible(true); }
public static String weight(File file){ long len = file.length(); String result = ""; long big = 1024; if(len < big) { result = len + "B"; } else if (len < big*1024) { result = len/big + "KB"; } else if (len < big*1024*1024) { result = len/big/big + "MB"; } else if (len < big*1024*1024*1024) { result = len/big/big/big + "GB"; } return result; } public static String getFileExtention(String filename){ int dotPos = filename.lastIndexOf(".") + 1; return filename.substring(dotPos); } public static void listFrame(File f) { Vector<String> column_names = new Vector<String>(); // формируем список названий полей (колонок) column_names.add("File Name"); column_names.add("File extention"); column_names.add("File size"); column_names.add("Play button"); // теперь каждую из записей следует поместить внутрь еще одного списка Vector<File> vec_data = new Vector<File>(); ; vec_data.addAll(FileSearch.searching(f)); JFrame frame = new JFrame("File search result on disk " + f); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setSize(400, 700); frame.setLocationRelativeTo(null); JTable table = new JTable(vec_data, column_names);
frame.add(new JScrollPane(table), BorderLayout.CENTER); frame.setVisible(true); } }
class ExtensionFilter implements FilenameFilter { private final String extension; public ExtensionFilter(String ext) { extension = ext; }
public boolean accept(File dir, String name) { return name.endsWith(extension); } }
|
Код | public class FileSearch { public static Vector<File> searching(File f) { // Каталог, в котором осуществляется поиск String DIR_NAME = "" + f; // Расширение файлов, которые необходимо удалить String[] EXTENSION = {".mp4", ".mp3", ".avi", ".mkv", ".ogm", ".flac"}; Vector<File> result = new Vector<File>(); for(String ext: EXTENSION){ final FilenameFilter filter = new ExtensionFilter(ext); final File dir = new File(DIR_NAME); // Полчаем список нужных нам файлов String[] filenames = dir.list(filter); for(String filename: filenames) { String fullFilename = new StringBuilder().append(DIR_NAME).append(File.separator).append(filename).toString(); File file = new File(fullFilename); result.add(file); } } return result; } // Вложенный класс, реализующий интерфейс FilenameFilter, с помощью // которого мы получаем список файлов с нужным расширением private static class ExtensionFilter implements FilenameFilter { private final String extension; public ExtensionFilter(String ext) { extension = ext; } public boolean accept(File dir, String name) { return name.endsWith(extension); } } }
|
1. вот, код естественно не работает - вроде проблема в связке Vector+File, вопрос - как это дело можно решить? (найденный пример кода был с вектором, хотелось попробовать код с ним)
2. как вычислить размер файла?
3. прочла, что описанный у меня метод создания таблиц имеет недостаток - данные в таблице редактируемые (на практике не видела - таблица не отрисовывается в виду ошибки из пункта 1). как решить?
4. как запустить файл по нажатию кнопки? как/через что вытянуть из вектора информацию о полном пути? (внятного описания для нуба не нашла, извините... поэтому спрашиваю тут)
5. как заставить программу ходить по папкам? облегчит ли выполнение программы многопоточность? как это можно тогда организовать? (хотя бы в общих чертах... это новая для меня тема) |