powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Листинг файлов с использованием GUI
25 сообщений из 112, страница 1 из 5
Листинг файлов с использованием GUI
    #38923156
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне надо создать в 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
Листинг файлов с использованием GUI
    #38923343
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Листинг файлов с использованием GUI
    #38925788
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот такой вариант может подойти. Чтобы на каждом этапе цикла обработки свойств файлов записывать строку в таблицу БД. Только не знаю возможно ли использование в операторе 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
Листинг файлов с использованием GUI
    #39085935
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Листинг файлов с использованием GUI
    #39085955
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сори, уже сам себе выправил касательно пустого неинициализированого вектора [хотя может здесь лутше подходить другая колекция например, List, для экономии памяти]
Vector <Item> listed = new Vector <Item> ();
А вот почему размер файла через lenght() не отображается непонятно.
...
Рейтинг: 0 / 0
Листинг файлов с использованием GUI
    #39085966
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrt,
В даном случае хотя-бы для диска С - для всех файлов проведен листинг - пол года назад
был недостаток памяти. В общем можно проверить размер одного обекта Item через getObjectSize(), но размер целого вектора вряд ли, после заполнения.
Но это все надо перевести в XML в отдельном окне, что не знаю возможно, но как?
Хотя сперва надо разобратся с lenght() в конструкторе
...
Рейтинг: 0 / 0
Листинг файлов с использованием GUI
    #39086317
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
//надо было поменять 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
Листинг файлов с использованием GUI
    #39086320
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уже убрал статик перед вектором и создал обьект с нестатическим вектором тоже
исключение java.io.NotSerializableException: Filewalker$Item
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
Но причем здесь Filewalker$Item если запись формируется уже на заполненом векторе?
...
Рейтинг: 0 / 0
Листинг файлов с использованием GUI
    #39086716
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrtНо причем здесь Filewalker$Item если запись формируется уже на заполненом векторе?
А внутри "вектора" что лежит?
...
Рейтинг: 0 / 0
Листинг файлов с использованием GUI
    #39086733
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
Да я понимаю что внутри файлволкера есть вложенный клас.
Так что конструкцию ObjectOutputStream out = new ObjectOutputStream(
new BufferedOutputStream(new FileOutputStream ...
невозможно применить к записи этого вектора в файл? Как и любой другой способ записи такого вектора будет невозможным?
...
Рейтинг: 0 / 0
Листинг файлов с использованием GUI
    #39086762
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Листинг файлов с использованием GUI
    #39086866
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
На счет фантазий, это у вас фантазии, извиняюсь за тавтологию.
implements Serializable - я применял вчера, результат тот же:
Исключение - но ошибок на счет обработки таких ситуаций у меня нету.
Тем более я скопировал этот код с IO - ибо эта тема не очень то любима мною,
потому редко с ней реально имел дело, особенно при использование врапперов
потоков.
...
Рейтинг: 0 / 0
Листинг файлов с использованием GUI
    #39086894
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrtimplements Serializable - я применял вчера, результат тот же:

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

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

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

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

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

arrtпотому редко с ней реально имел дело, особенно при использование врапперов
потоков.
Ну, так пора восполнить пробел.
...
Рейтинг: 0 / 0
Листинг файлов с использованием GUI
    #39087472
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
implements Serializable -- можете проверить.
форум кажется есть для заполнение пробелов.
Может вы б посоветовали удалить вложенный клас для сериализации,
ибо кажется в этом причина - если для этого варианта
не проходит то другие врапперы вряд-ли помогут
...
Рейтинг: 0 / 0
Листинг файлов с использованием GUI
    #39087507
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да помощи здесь не дождешся,
потому взял и сам переделал файлволкер и все поместил
в один клас со статическим вектором и статическим методом листинга.
Хотя сериализация как бы тоже не работает с статическими
переменными здесь файл записался с вектором на 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
Листинг файлов с использованием GUI
    #39087508
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Осталось все это как-то в XML поместить,
интересно как это сделать если это надо с помощью
GUI - не буду ведь все XML помешать в Label,
может TreeView подойдет?
Может здесь какие-то предложения услышу
[P.S. обьем одного обьекта файлволкера около 130 байт,
но это вычислено с помощью статического подхода]
...
Рейтинг: 0 / 0
Листинг файлов с использованием GUI
    #39088558
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
здесь я использую простой копи-паст (с 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
Листинг файлов с использованием GUI
    #39088613
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrt,
По задаче.
Такие задачи решаются проще.
Индексный файл это просто файл формата.
Имя, ПутьКфайлу.
Всё. Если ты описал всё ТЗ
...
Рейтинг: 0 / 0
Листинг файлов с использованием GUI
    #39088846
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, не знаю что такое файл формата.
Привели б пример, и то раньше. В любом случае, только на одном диске
"С" есть 85 тыс. файлов с трема полями свойств - даже умножить
на 10 будет 2,5 мб. - у меня получается 11,5 мб. - то есть вопрос эфективнее ли это?
Но в XML мне надо и так вывести и то в Swing или AWT - потому мне сейчас актуальнее этот
аспект.
@XmlRootElement - что надо прописать?
работает ли marshal с векторами, да и возможно ли в этом случае вывести в
графическом а не только через System.out
...
Рейтинг: 0 / 0
Листинг файлов с использованием GUI
    #39088853
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Листинг файлов с использованием GUI
    #39088854
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, не знаю что такое файл формата.
Привели б пример, и то раньше. В любом случае, только на одном диске
"С" есть 85 тыс. файлов с трема полями свойств - даже умножить
на 10 будет 2,5 мб. - у меня получается 11,5 мб. - то есть вопрос эфективнее ли это?
Но в XML мне надо и так вывести и то в Swing или AWT - потому мне сейчас актуальнее этот
аспект.
@XmlRootElement - что надо прописать?
работает ли marshal с векторами, да и возможно ли в этом случае вывести в
графическом а не только через System.out
...
Рейтинг: 0 / 0
Листинг файлов с использованием GUI
    #39088869
arrt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrt,
"это вот это в текствовом файле" - так у меня это и выходит.
"адрес файла" - С++ с адресами имеет дело, или вы очевидно имеете ввиду полный путь
Что бы каждый раз не сканировать - ну так мне надо все файлы прочитать.
Если там есть три задание сделать индексацию, вывести в XML, и записать в файл - и я
в каждом задание делаю индексацию, думаю это не такая большая проблема.
Может первое и второе задание обьединить - создать вектор (Кнопка ИНДЕКСАЦИЯ),
потом Кнопка "Вывести XML" - уже с готового вектора в текстовое поле (или только в TreeView)?,
и кнопка "Записать в файл" с выводом сообщение в Label что успешно записано в файл.
...
Рейтинг: 0 / 0
Листинг файлов с использованием GUI
    #39088880
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arrt,
Понятно. Занчит XML тебе жёстко задан.
несмотря на автор (с xml вообще не работал на jave),
тогда деразай! Удачи!
...
Рейтинг: 0 / 0
Листинг файлов с использованием GUI
    #39089432
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, но что в даном случае
можно сделать
...
Рейтинг: 0 / 0
Листинг файлов с использованием GUI
    #39089932
golovonometr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
25 сообщений из 112, страница 1 из 5
Форумы / Java [игнор отключен] [закрыт для гостей] / Листинг файлов с использованием GUI
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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