Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Листинг файлов с использованием GUI / 25 сообщений из 112, страница 1 из 5
31.03.2015, 20:37
    #38923156
arrt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
Мне надо создать в SWING, AWT графическое приложение чтобы оно могло индекс. файлы в системе (что это кокретно это тоже несколько меня озадачивает, может присвоение уникального номера?), и потом записать файл в XML (так как возможности детализировать не было не понятно надо ли после индексирован. записывать даные в отдельный файл, и потом после его открытие конверитировать) с возможнотью поиска по имени. Теги должны быть имя, путь, размер.
Ниже я привел код, который выводить на консоль эти данные о файле, и записывает при помощи класа Файл1 даные о каждом файле в вектор. Но узнать размер этого вектора (через ошибку Outofmemory, heap). Потому я добавил строки касательно записи этого вектора в сериализирующий файл. Но при компиляции появляются ошибки -- Symbol cannot found. В чем здесь проблема, кроме того что может там input output поменять, и как задать имя в создаваемый файл?

java.io.File;
import java.util.Vector;
import java.io.ByteArrayInputStream;
import java.io.ObjectInputStream;
public class Filewalk {
Vector<File1> vs= new Vector<File1>();
public void walk( String path ) {
File root = new File( path );
File[] list = root.listFiles();
if (list == null) return;
for ( File f : list ) {
if ( f.isDirectory() ) {
walk( f.getAbsolutePath() );
}
else {
File1 fv=new File1(f.getAbsoluteFile().toString(),f.length());
vs.add(fv);
}
}
}
public static void main(String[] args) throws Exception {
Filewalk fw = new Filewalk();
File [] disks = File.listRoots();
for ( File d : disks )
fw.walk(d.toString());
ByteArrayInputStream baos = new ByteArrayInputStream();
ObjectInputStream oos = new ObjectInputStream(baos);
oos.writeObject(fw.vs);
oos.close();
}
}
class File1 {
File1 (String path1, long size1)
{ this.path=path1; this.size=size1;}
String path;
long size;}


Если не брать во внимание аспекты необходимости памяти возможно ли создать в этом же пакете файл-Swing который бы отображал Jtable (аргументом которой мог бы быть вышеприведенный вектор).
...
Рейтинг: 0 / 0
01.04.2015, 09:27
    #38923343
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
arrtчтобы оно могло индекс.
Русский не родной?
arrtфайлы в системе (что это кокретно это тоже несколько меня озадачивает, может присвоение уникального номера?)
Возможно просто список файлов. Надо смотреть формулировку самого задания. Например, содержание в книге это тоже index.

arrtНо узнать размер этого вектора (через ошибку Outofmemory, heap).
Я слов бы, но нет.

arrtНо при компиляции появляются ошибки -- Symbol cannot found.
Ошибки появляются более детализированные. Но вы нам предлагаете запустить ваш код и посмотреть на них самостоятельно?

Используйте теги подсветки кода:
Код: java
1.
2.
public class Filewalk {
Vector<File1> vs= new Vector<File1>();



Код: java
1.
Если не брать во внимание аспекты необходимости памяти возможно ли создать в этом же пакете файл-Swing который бы отображал Jtable (аргументом которой мог бы быть вышеприведенный вектор). 


Возможно
...
Рейтинг: 0 / 0
03.04.2015, 05:28
    #38925788
arrt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
А вот такой вариант может подойти. Чтобы на каждом этапе цикла обработки свойств файлов записывать строку в таблицу БД. Только не знаю возможно ли использование в операторе INSERT INTO переменых полученных тем более при исользование связки клас.метод. Ну и обработка исключений тоже много здесь тебует.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
import java.sql.*;
  import java.io.File;
 public class Filewalk {
 int i=0;
 static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";   
 static final String DB_URL = "jdbc:mysql://localhost/STUDENTS"; 
  static final String USER = "root"; 
 static final String PASS = "";

 Connection conn = null; 
 Statement stmt = null;
  //STEP 2: Register JDBC driver 
  Class.forName("com.mysql.jdbc.Driver"); 

  //STEP 3: Open a connection 
  System.out.println("Connecting to a selected database..."); 
  conn = DriverManager.getConnection(DB_URL, USER, PASS); 
  System.out.println("Connected database successfully..."); 

  //STEP 4: Execute a query 
  System.out.println("Creating table in given database..."); 
  stmt = conn.createStatement(); 

  String sq = "CREATE DATABASE FILESS"; 
  stmt.executeUpdate(sq); 

  String sql1 = "CREATE TABLE SYSTEM1 " + 
               "(id INTEGER not NULL, " + 
               " name VARCHAR(255), " +  
               " path VARCHAR(255), " +  
               " size INTEGER, " +  
               " PRIMARY KEY ( id ))";  
  stmt.executeUpdate(sql1); 


  public void walk( String path ) {
  File root = new File( path );
  File[] list = root.listFiles();
 if (list == null) return;
 for ( File f : list ) {
 if ( f.isDirectory() ) {
  walk( f.getAbsolutePath() );
 }
 else {
 String sql2 = "INSERT INTO SYSTEM1" + 
 "VALUES (i++,f.getName(), f.getAbsoluteFile().toString(),f.length())"; 
 stmt.executeUpdate(sql2);
}
}

try{ 
     if(stmt!=null) 
        conn.close(); 
  }catch(SQLException se){ 
  }// do nothing 
  try{ 
     if(conn!=null) 
        conn.close(); 
  }catch(SQLException se){ 
     se.printStackTrace(); 
  }//end finally try
     }//end try 
 System.out.println("Goodbye!"); 
}//end main 


}
public static void main(String[] args) {
Filewalk fw = new Filewalk();
File [] disks = File.listRoots();
for ( File d : disks )
fw.walk(d.toString());
}
}
...
Рейтинг: 0 / 0
25.10.2015, 18:14
    #39085935
arrt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
arrt,
Все-таки хотел возвратится к листингу файлов.
Вот несколько переделав код получаю такую ошибку:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
import java.util.Vector;
import java.io.File;
    public class Filewalker {
        class Item {
        long length;
        String name;
        String path;
        Item (long length1, String name1, String path1)
        {
        length=length;
        name=name1;
        path=path1;
        System.out.println( "File:" + length + " " + name+ "  " + path);
         }
                }        
        Vector <Item> listed;               
        public void walk( String path ) {
            File root = new File( path );
            File[] list = root.listFiles();
            if (list == null) return;
            for ( File f : list ) {
                if ( f.isDirectory() ) {
                    walk( f.getAbsolutePath() );
                }
                else {
                Filewalker fn = new Filewalker();
                Filewalker.Item odyn = fn.new Item (f.length(), f.getName(), f.getPath());
                this.listed.add(odyn);
                System.out.println( "File:" + f.length() + " " + f.getName()+ "  " + f.getPath());
                //System.out.println(this.list.size());
                }
            }
        }
        public static void main(String[] args) {
            Filewalker fw = new Filewalker();
            fw.walk("c:\\" );
        }
    }


Ошибка --
File:0 IO.SYS c:\IO.SYS
Exception in thread "main" java.lang.NullPointerException
at Filewalker.walk(Filewalker.java:28) -- this.listed.add(odyn);
at Filewalker.main(Filewalker.java:36) -- fw.walk("c:\\" );

-- но обьект создается (проверка через вывод свойств в конструкторе).
Но при выводе в конструкторе length() дает всюду 0 (хотя имя и путь выводяться правильно), хотя в методе - walk, length() дает конкретный результат.
В чем здесь причина?
...
Рейтинг: 0 / 0
25.10.2015, 18:34
    #39085955
arrt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
сори, уже сам себе выправил касательно пустого неинициализированого вектора [хотя может здесь лутше подходить другая колекция например, List, для экономии памяти]
Vector <Item> listed = new Vector <Item> ();
А вот почему размер файла через lenght() не отображается непонятно.
...
Рейтинг: 0 / 0
25.10.2015, 18:43
    #39085966
arrt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
arrt,
В даном случае хотя-бы для диска С - для всех файлов проведен листинг - пол года назад
был недостаток памяти. В общем можно проверить размер одного обекта Item через getObjectSize(), но размер целого вектора вряд ли, после заполнения.
Но это все надо перевести в XML в отдельном окне, что не знаю возможно, но как?
Хотя сперва надо разобратся с lenght() в конструкторе
...
Рейтинг: 0 / 0
26.10.2015, 03:33
    #39086317
arrt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
//надо было поменять length=length на length=length1 в кострукторе.
Вот я создал клас и для записи вектора в файл, но после исполнения
файла файл на диске имеет всего 165 байт, что значит что файл фактически пуст а только на диске С в векторе после проверки есть 85 тыс. файлов.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Vector;

    class Test1 {  
       public static void main(String args[])throws java.io.IOException {

       //Filewalker fw = new Filewalker();
       //fw.walk("c:\\" );
            
       String FILE_NAME = "D:\\file.ser"; 
      
       ObjectOutputStream out = new ObjectOutputStream(
       new BufferedOutputStream(new FileOutputStream(FILE_NAME)));
       try {
      out.writeObject(Filewalker.listed);
    } finally {
      out.close();
    }    
       }  
    }  


Что сделать что-бы на дисковый файл записывался уже полный вектор со всеми 85 тыс. обьектами? После раскоментирование
//Filewalker fw = new Filewalker();
//fw.walk("c:\\" );
Я при листинге снова всех файлов при попытке записать файл
послучаю Exception in thread "main" java.io.NotSerializableException: Filewalker$Item
at java.io.ObjectOutputStream.writeObject0(Unknown Source) -- В чем причина.
Почему не сериализируется вектор при записи?
...
Рейтинг: 0 / 0
26.10.2015, 03:51
    #39086320
arrt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
Уже убрал статик перед вектором и создал обьект с нестатическим вектором тоже
исключение java.io.NotSerializableException: Filewalker$Item
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
Но причем здесь Filewalker$Item если запись формируется уже на заполненом векторе?
...
Рейтинг: 0 / 0
26.10.2015, 12:51
    #39086716
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
arrtНо причем здесь Filewalker$Item если запись формируется уже на заполненом векторе?
А внутри "вектора" что лежит?
...
Рейтинг: 0 / 0
26.10.2015, 13:01
    #39086733
arrt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
Blazkowicz,
Да я понимаю что внутри файлволкера есть вложенный клас.
Так что конструкцию ObjectOutputStream out = new ObjectOutputStream(
new BufferedOutputStream(new FileOutputStream ...
невозможно применить к записи этого вектора в файл? Как и любой другой способ записи такого вектора будет невозможным?
...
Рейтинг: 0 / 0
26.10.2015, 13:12
    #39086762
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
arrtBlazkowicz,
Да я понимаю что внутри файлволкера есть вложенный клас.
Так что конструкцию ObjectOutputStream out = new ObjectOutputStream(
new BufferedOutputStream(new FileOutputStream ...
невозможно применить к записи этого вектора в файл? Как и любой другой способ записи такого вектора будет невозможным?

У вас очень странные фантазии. Вы бы вместого того чтобы выдумывать и предполагать, читали бы документацию.
https://docs.oracle.com/javase/tutorial/jndi/objects/serial.html
Ваша ошибка решается вот так:
Код: java
1.
 class Item implements Serializable {



И ещё IOException у вас обрабатывается не правильно
https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
...
Рейтинг: 0 / 0
26.10.2015, 14:21
    #39086866
arrt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
Blazkowicz,
На счет фантазий, это у вас фантазии, извиняюсь за тавтологию.
implements Serializable - я применял вчера, результат тот же:
Исключение - но ошибок на счет обработки таких ситуаций у меня нету.
Тем более я скопировал этот код с IO - ибо эта тема не очень то любима мною,
потому редко с ней реально имел дело, особенно при использование врапперов
потоков.
...
Рейтинг: 0 / 0
26.10.2015, 14:34
    #39086894
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
arrtimplements Serializable - я применял вчера, результат тот же:

Это ложь. Тогда бы было другое сообщение об ошибке.

arrtИсключение - но ошибок на счет обработки таких ситуаций у меня нету.

Каких таких? Незакрытых ресурсов?

arrtТем более я скопировал этот код с IO - ибо эта тема не очень то любима мною,

Ваши вкусовые предпочтения очень важны в решении проблемы.

arrtпотому редко с ней реально имел дело, особенно при использование врапперов
потоков.
Ну, так пора восполнить пробел.
...
Рейтинг: 0 / 0
27.10.2015, 00:24
    #39087472
arrt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
Blazkowicz,
implements Serializable -- можете проверить.
форум кажется есть для заполнение пробелов.
Может вы б посоветовали удалить вложенный клас для сериализации,
ибо кажется в этом причина - если для этого варианта
не проходит то другие врапперы вряд-ли помогут
...
Рейтинг: 0 / 0
27.10.2015, 03:26
    #39087507
arrt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
Да помощи здесь не дождешся,
потому взял и сам переделал файлволкер и все поместил
в один клас со статическим вектором и статическим методом листинга.
Хотя сериализация как бы тоже не работает с статическими
переменными здесь файл записался с вектором на 11 мб, что явно не
3-4 кб. В общем не проверял через десериализацию можно ли отобразить данные полностью с файла в вектор.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
import java.util.Vector;
import java.io.File;
    public class Filewalker implements java.io.Serializable {
        long length;
        String name;
        String path;
        Filewalker(long length1, String name1, String path1)
        {
        length=length1;
        name=name1;
        path=path1;
        System.out.println( "File:" + length + " " + name+ "  " + path);
         }        
        static Vector <Filewalker> listed = new Vector <Filewalker> ();               
        public static void walk( String path ) {
            File root = new File( path );
            File[] list = root.listFiles();
            if (list == null) return;
            for ( File f : list ) {
                if ( f.isDirectory() ) {
                    walk( f.getAbsolutePath() );
                }
                else {
                
                Filewalker odyn = new Filewalker (f.length(), f.getName(), f.getPath());
                listed.add(odyn);
                System.out.println( "File:" + f.length() + " " + f.getName()+ "  " + f.getPath());
                System.out.println(listed.size());
                }
            }
        }
        public static void main(String[] args) {
            Filewalker.walk("c:\\" );
        }
    }
...
Рейтинг: 0 / 0
27.10.2015, 03:33
    #39087508
arrt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
Осталось все это как-то в XML поместить,
интересно как это сделать если это надо с помощью
GUI - не буду ведь все XML помешать в Label,
может TreeView подойдет?
Может здесь какие-то предложения услышу
[P.S. обьем одного обьекта файлволкера около 130 байт,
но это вычислено с помощью статического подхода]
...
Рейтинг: 0 / 0
28.10.2015, 02:39
    #39088558
arrt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
здесь я использую простой копи-паст (с xml вообще не работал на jave),
но готовый xml-код работает для
закоментированого кода.
Для моего кода вызывает ошибку:
Код: java
1.
2.
3.
Exception in thread "main" javax.xml.bind.MarshalException
 - with linked exception:
[com.sun.istack.internal.SAXException2: unable to marshal type "java.util.Vector" as an element because it is missing an @XmlRootElement annotation]



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
import java.util.Vector;
import java.io.FileOutputStream;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.annotation.XmlRootElement;

public class JavaToXMLDemo {
  public static void main(String[] args) throws Exception {
    Filewalker.walk("c:\\" ); // сам метод ограничил до 100 первых итераций (файлов)
    JAXBContext context = JAXBContext.newInstance(Filewalker.class,Vector.class); //Vector.class --добавил сам ибо его отсутвие вызывало другое исключение, хотя вышеприведеное тоже связано с венктором
    Marshaller m = context.createMarshaller();
    m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
    //Employee object = new Employee();
    //object.setCode("CA");
    //object.setName("Cath");
    //object.setSalary(300);

    m.marshal(Filewalker.listed, System.out); 

  }
}

//@XmlRootElement

/*class Employee {
  private String code;

  private String name;

  private int salary;

  public String getCode() {
    return code;
  }

  public void setCode(String code) {
    this.code = code;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public int getSalary() {
    return salary;
  }

  public void setSalary(int population) {
    this.salary = population;
  }
}
*/


То есть что эта @XmlRootElement -- анотация делает,
как ее расписывать для встроеной колекции вектор, и надо ли такую ж анотацию для файлволкера
...
Рейтинг: 0 / 0
28.10.2015, 08:46
    #39088613
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
arrt,
По задаче.
Такие задачи решаются проще.
Индексный файл это просто файл формата.
Имя, ПутьКфайлу.
Всё. Если ты описал всё ТЗ
...
Рейтинг: 0 / 0
28.10.2015, 12:34
    #39088846
arrt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
Petro123, не знаю что такое файл формата.
Привели б пример, и то раньше. В любом случае, только на одном диске
"С" есть 85 тыс. файлов с трема полями свойств - даже умножить
на 10 будет 2,5 мб. - у меня получается 11,5 мб. - то есть вопрос эфективнее ли это?
Но в XML мне надо и так вывести и то в Swing или AWT - потому мне сейчас актуальнее этот
аспект.
@XmlRootElement - что надо прописать?
работает ли marshal с векторами, да и возможно ли в этом случае вывести в
графическом а не только через System.out
...
Рейтинг: 0 / 0
28.10.2015, 12:40
    #39088853
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
arrtPetro123, не знаю что такое файл формата.
это вот это в текствовом файле:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
C:\Windows\assembly\GAC_32\mcupdate\6.1.0.0__31bf3856ad364e35\mcupdate.exe
C:\Windows\assembly\GAC_32\MSBuild\3.5.0.0__b03f5f7f11d50a3a\MSBuild.exe
C:\Windows\assembly\GAC_MSIL\ComSvcConfig\3.0.0.0__b03f5f7f11d50a3a\ComSvcConfig.exe
C:\Windows\assembly\GAC_MSIL\dfsvc\2.0.0.0__b03f5f7f11d50a3a\dfsvc.exe
C:\Windows\assembly\GAC_MSIL\ehexthost\6.1.0.0__31bf3856ad364e35\ehexthost.exe
C:\Windows\assembly\GAC_MSIL\loadmxf\6.1.0.0__31bf3856ad364e35\loadmxf.exe
C:\Windows\assembly\GAC_MSIL\Narrator\6.1.0.0__31bf3856ad364e35\Narrator.exe
C:\Windows\assembly\GAC_MSIL\PresentationFontCache\3.0.0.0__31bf3856ad364e35\PresentationFontCache.exe


Можно и в двоичном, если это тебе надо в ГУИ для объекта Tree Panel и т.д.
смысл в том, чтобы прописать адрес файла у себя под рукой и не сканировать каждый раз систему.
arrtто есть вопрос эфективнее ли это?
если ты способен логически думать, то да.
Удачи!
...
Рейтинг: 0 / 0
28.10.2015, 12:41
    #39088854
arrt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
Petro123, не знаю что такое файл формата.
Привели б пример, и то раньше. В любом случае, только на одном диске
"С" есть 85 тыс. файлов с трема полями свойств - даже умножить
на 10 будет 2,5 мб. - у меня получается 11,5 мб. - то есть вопрос эфективнее ли это?
Но в XML мне надо и так вывести и то в Swing или AWT - потому мне сейчас актуальнее этот
аспект.
@XmlRootElement - что надо прописать?
работает ли marshal с векторами, да и возможно ли в этом случае вывести в
графическом а не только через System.out
...
Рейтинг: 0 / 0
28.10.2015, 12:53
    #39088869
arrt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
arrt,
"это вот это в текствовом файле" - так у меня это и выходит.
"адрес файла" - С++ с адресами имеет дело, или вы очевидно имеете ввиду полный путь
Что бы каждый раз не сканировать - ну так мне надо все файлы прочитать.
Если там есть три задание сделать индексацию, вывести в XML, и записать в файл - и я
в каждом задание делаю индексацию, думаю это не такая большая проблема.
Может первое и второе задание обьединить - создать вектор (Кнопка ИНДЕКСАЦИЯ),
потом Кнопка "Вывести XML" - уже с готового вектора в текстовое поле (или только в TreeView)?,
и кнопка "Записать в файл" с выводом сообщение в Label что успешно записано в файл.
...
Рейтинг: 0 / 0
28.10.2015, 13:00
    #39088880
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
arrt,
Понятно. Занчит XML тебе жёстко задан.
несмотря на автор (с xml вообще не работал на jave),
тогда деразай! Удачи!
...
Рейтинг: 0 / 0
29.10.2015, 00:46
    #39089432
arrt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
Вот я состряпал на основание готового кода мой XML и у меня в цыкле for-each возникает
ошыбка несовпадение типов при декомпозиции вектора - хотел бы чтобы мне подсказали как ее устанить.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
import java.io.File; 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import java.util.Vector;

public class CrunchifyCreateXMLDOM1 {
 
    public static void xmlmain() {
        DocumentBuilderFactory icFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder icBuilder;
        try {
            icBuilder = icFactory.newDocumentBuilder();
            Document doc = icBuilder.newDocument();
            Element mainRootElement = doc.createElementNS("http://crunchify.com/CrunchifyCreateXMLDOM", "Companies");
            doc.appendChild(mainRootElement);
            
            Filewalker.walk("c:\\" );
            
            for ( Vector <Filewalker> fp : (Vector <Filewalker>)Filewalker.listed ) {
//for ( Vector <Filewalker> fp : Filewalker.listed ) -- таже ошибка error: incompatible types
            
           // append child elements to root element
            mainRootElement.appendChild(getCompany(doc, fp.name, fp.size, fp.path));
           //mainRootElement.appendChild(getCompany(doc, "2", "eBay", "Shopping", "2000"));
           //mainRootElement.appendChild(getCompany(doc, "3", "Google", "Search", "3000"));
 
           // output DOM XML to console 
            Transformer transformer = TransformerFactory.newInstance().newTransformer();
            transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
            DOMSource source = new DOMSource(doc);
            StreamResult console = new StreamResult(System.out);
            transformer.transform(source, console);}
 
            System.out.println("\nXML DOM Created Successfully..");
 
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    private static Node getCompany(Document doc, String name, long size, String path) {
        Element company = doc.createElement("File");
        company.appendChild(getCompanyElements(doc, company, "Name", name));
        company.appendChild(getCompanyElements(doc, company, "Size", (String)size)); 
//error: inconvertible types в (String)size)
        company.appendChild(getCompanyElements(doc, company, "Path", path));
        return company;
    }
 
    // utility method to create text node
    private static Node getCompanyElements(Document doc, Element element, String name, String value) {
        Element node = doc.createElement(name);
        node.appendChild(doc.createTextNode(value));
        return node;
    }
    
    public static void main(String[] args) {
		CrunchifyCreateXMLDOM1.xmlmain();
	}
}


Понятно что в колекциях имеет место type erasure, но что в даном случае
можно сделать
...
Рейтинг: 0 / 0
29.10.2015, 12:52
    #39089932
golovonometr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Листинг файлов с использованием GUI
arrtВот я состряпал на основание готового кода мой XML и у меня в цыкле for-each возникает
ошыбка несовпадение типов при декомпозиции вектора - хотел бы чтобы мне подсказали как ее устанить.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
import java.io.File; 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import java.util.Vector;

public class CrunchifyCreateXMLDOM1 {
 
    public static void xmlmain() {
        DocumentBuilderFactory icFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder icBuilder;
        try {
            icBuilder = icFactory.newDocumentBuilder();
            Document doc = icBuilder.newDocument();
            Element mainRootElement = doc.createElementNS("http://crunchify.com/CrunchifyCreateXMLDOM", "Companies");
            doc.appendChild(mainRootElement);
            
            Filewalker.walk("c:\\" );
            
            for ( Vector <Filewalker> fp : (Vector <Filewalker>)Filewalker.listed ) {
//for ( Vector <Filewalker> fp : Filewalker.listed ) -- таже ошибка error: incompatible types
            
           // append child elements to root element
            mainRootElement.appendChild(getCompany(doc, fp.name, fp.size, fp.path));
           //mainRootElement.appendChild(getCompany(doc, "2", "eBay", "Shopping", "2000"));
           //mainRootElement.appendChild(getCompany(doc, "3", "Google", "Search", "3000"));
 
           // output DOM XML to console 
            Transformer transformer = TransformerFactory.newInstance().newTransformer();
            transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
            DOMSource source = new DOMSource(doc);
            StreamResult console = new StreamResult(System.out);
            transformer.transform(source, console);}
 
            System.out.println("\nXML DOM Created Successfully..");
 
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    private static Node getCompany(Document doc, String name, long size, String path) {
        Element company = doc.createElement("File");
        company.appendChild(getCompanyElements(doc, company, "Name", name));
        company.appendChild(getCompanyElements(doc, company, "Size", (String)size)); 
//error: inconvertible types в (String)size)
        company.appendChild(getCompanyElements(doc, company, "Path", path));
        return company;
    }
 
    // utility method to create text node
    private static Node getCompanyElements(Document doc, Element element, String name, String value) {
        Element node = doc.createElement(name);
        node.appendChild(doc.createTextNode(value));
        return node;
    }
    
    public static void main(String[] args) {
		CrunchifyCreateXMLDOM1.xmlmain();
	}
}


Понятно что в колекциях имеет место type erasure, но что в даном случае
можно сделать

for ( Filewalker fp : Filewalker.listed ) { - так работает?
company.appendChild(getCompanyElements(doc, company, "Size", String.valueOf(size))); - так работает?

Чувак, что ты с файлами сделать хочешь? Я не догоняю
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Листинг файлов с использованием GUI / 25 сообщений из 112, страница 1 из 5
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]