• Downloads
  • ! Read Me !
  • Μαθήματα
  • Φοιτητικά
  • Τεχνικά Θέματα
  • Συζητήσεις
  • Happy Hour!
  • About THMMY.gr
 V  < 
Search:  
Welcome, Guest. Please login or register.
June 16, 2025, 19:29:11 pm

Login with username, password and session length
Links
  Thmmy.gr portal
   Forum
   Downloads
   Ενεργ. Λογαριασμού
   Επικοινωνία
  
  Χρήσιμα links
   Σελίδα τμήματος
   Βιβλιοθήκη Τμήματος
   Elearning
   Φοιτητικά fora
   Πρόγραμμα Λέσχης
   Πρακτική Άσκηση
   Ηλεκτρονική Εξυπηρέτηση Φοιτητών
   Διανομή Συγγραμμάτων
   Ψηφιακό Καταθετήριο Διπλωματικών
   Πληροφορίες Καθηγητών
   Instagram @thmmy.gr
   mTHMMY
  
  Φοιτητικές Ομάδες
   ACM
   Aristurtle
   ART
   ASAT
   BEAM
   BEST Thessaloniki
   EESTEC LC Thessaloniki
   EΜΒ Auth
   IAESTE Thessaloniki
   IEEE φοιτητικό παράρτημα ΑΠΘ
   SpaceDot
   VROOM
   Panther
  
Πίνακας Ελέγχου
Welcome, Guest. Please login or register.
June 16, 2025, 19:29:11 pm

Login with username, password and session length

Αναζήτηση

Google

THMMY.gr Web
Πρόσφατα
[Σ.Π.Η.Ε.] Γενικές απορίε...
by georkala
[Today at 19:26:44]

[ΘΤΠΑ] Γενικές απορίες κα...
by Nikos_313
[Today at 16:56:56]

[Εφ.Θερμοδυναμική] Γενικέ...
by Λαμπτήρας
[Today at 15:55:08]

[Αρχές Οικονομίας] Να επι...
by _Trob
[Today at 13:28:21]

[Σ.Α.Π.Γ.] Εργασία 2025
by Nikos_313
[Today at 12:13:45]

Αποτελέσματα Εξεταστικής ...
by Nikos_313
[Today at 12:01:53]

Πρακτική Άσκηση ΤΗΜΜΥ 201...
by George_RT
[Today at 10:22:18]

[Διανεμημένη Παραγωγή] Γε...
by Διάλεξις
[Today at 01:56:37]

Ισραήλ - Ιράν: Πόλεμος στ...
by Katarameno
[June 15, 2025, 20:08:49 pm]

Αντικατάστασης πυκνωτή σε...
by nmpampal
[June 15, 2025, 16:25:56 pm]

[Σ.Π.Η.Ε.] Παλιά θέματα -...
by nmpampal
[June 15, 2025, 06:43:15 am]

Το thmmy.gr στο instagram...
by Mr Watson
[June 15, 2025, 00:50:23 am]

[Λογισμός ΙΙ] Απορίες σε...
by el mariachi
[June 14, 2025, 20:47:07 pm]

ΠΡΟΣΟΧΗ στο ανέβασμα θεμά...
by tzortzis
[June 14, 2025, 16:54:08 pm]

Ρυθμίσεις Θεμάτων της Ανώ...
by el mariachi
[June 14, 2025, 11:56:45 am]

Πότε θα βγει το μάθημα; -...
by Nikos_313
[June 14, 2025, 10:00:55 am]

Αρχείο Ανακοινώσεων [Arch...
by Nikos_313
[June 14, 2025, 09:58:14 am]

Αλέξης Τσίπρας, η επιστρο...
by Yamal
[June 14, 2025, 04:42:23 am]

Έναρξη Δηλώσεων Συμμετοχή...
by IEEE SB
[June 14, 2025, 00:10:19 am]

[Δυναμική Συμπεριφορά ΣΗΕ...
by soko_freta
[June 13, 2025, 01:05:36 am]
Στατιστικά
Members
Total Members: 9959
Latest: valco08
Stats
Total Posts: 1426675
Total Topics: 31711
Online Today: 217
Online Ever: 2093
(April 17, 2025, 08:47:49 am)
Users Online
Users: 98
Guests: 123
Total: 221
natavhoo
Petros Ts
moutdimi
christina02
Chrisvb17
cealexop
kakousios
karadimitras
msandr
AlexKyr
fivosfivos1
papatmaria
lelenia
georkala
Papadopoulosthanos
maranageo
Χρήστος Κίτσος
PurpleWitch
folas
kostas.de
nikos123321
tasos_ntv
chrisdardas
PolarBear
mgrivab
Pcsc
aachmet
George15
abunchofcells
akiousia
kokkinosgior
itsikou
elias_farhood
Farmakis Aggelos
papaane
karaths.d
VaiosG
George_RT
AgaG
kourkou
mavropan
stefpapa21
ANDVRONTZOS
tzortzis
gkaramp
Η ΤΡΑΠΟΥΛΑ ΤΟΥ ΠΑΠΠΟΥ ΜΟΥ
alice
gcheristanidhs
gkyrodi
tasakis
thegreekbaron
papajohnn06
mkakale
ftheo11
3rdDegreeBurn
george14
annaparask
akoil
thathas12
noimaginationforthis
WeirdAlex
sofoklhs_pizza
akontel
Sanaia
BCosT
Κaraflodaimonas
Spyros.kleanthous
marwt
Kaniki
Arakapas
evtrents
vasilis saitis
Kenedy
alexlemp
acapulco
adamchatz
elischat
georgepana9
Mikekmp
npalami
angelos
adelaine
stelinas
simosilias
PanosPapaspirou
nick_slendy
Ma8hths Indou
grosdanis
Alex Kosmas
DimKaratzas
Εμφάνιση

Νέα για πρωτοετείς
Είσαι πρωτοετής;... Καλώς ήρθες! Μπορείς να βρεις πληροφορίες εδώ. Βοήθεια για τους καινούργιους μέσω χάρτη.
Κατεβάστε εδώ το Android Application για εύκολη πρόσβαση στο forum.
Ανεβάζετε τα θέματα των εξετάσεων στον τομέα Downloads με προσοχή στα ονόματα των αρχείων!

Νέα!
Πληροφορίες Καθηγητών
THMMY.gr > Forum > Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα > Περί Υπολογιστών... > Software > Προγραμματισμός (C, VB, Delphi, PHP, ASP...) > Java (Moderators: chatzikys, PolarBear) > Ερώτηση σε JAVA
0 Members and 1 Guest are viewing this topic.
Pages: [1] 2 Go Down Print
Author Topic: Ερώτηση σε JAVA  (Read 3283 times)
portinos
Καταξιωμένος/Καταξιωμένη
***
Posts: 264



View Profile
Ερώτηση σε JAVA
« on: September 10, 2013, 13:51:58 pm »

Hi!!!! Έχω φτιάξει ένα πρόγραμμα σε JAVA και σε κάποιο σημείο αυτό το πρόγραμμα ανοίγει ένα άλλο πρόγραμμα .exe. Στη συνέχεια θέλω να δουλεύω σε εκείνο το πρόγραμμα και μετά αυτό που φτιάχνω στο πρόγραμμα θέλω να ανοίγει στη JAVA αυτόματα. Μπορώ να το φτιάξω έτσι ώστε να αποθηκέυω το αρχείο και μετά να το καλώ από το πρόγραμμα της JAVA, αλλά γίνεται να γίνει κάπως πιο εύκολα; Αυτό που εννοώ είναι αν μπορώ να ορίσω μέσα από το JAVA πρόγραμμα που θα αποθηκεύεται και πως θα ονομάζεται το αρχείο του άλλου προγράμματος. Θέλω να γίνει με αυτό τον τρόπο γιατί θα το ξαναχρησιμοποιήσω μέσα στο JAVA πρόγραμμα. Λίγο μπέρδεμα εεε;;;

Ευχαριστώ!!!!
Logged
antares
Νεούλης/Νεούλα
*
Gender: Male
Posts: 48


Do you want some...thmmy, darling?


View Profile
Re: Ερώτηση σε JAVA
« Reply #1 on: September 10, 2013, 14:04:29 pm »

Μια λύση είναι να χρησιμοποιήσεις τις εισόδους/εξόδους (stdin/stdout) μεταξύ των processes (java <-> exe) και να στέλνεις εντολές μεταξύ τους. Αυτό θα χρειαστεί να έχεις ξεχωριστά threads (και στο java process αλλά και στο exe process) για να ακούς την είσοδο για εντολές.

Για να ξεκινήσεις δες εδω http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html
Logged
portinos
Καταξιωμένος/Καταξιωμένη
***
Posts: 264



View Profile
Re: Ερώτηση σε JAVA
« Reply #2 on: September 10, 2013, 15:09:43 pm »

Ευχαριστώ, αλλά μάλλον περισσότερο μπερδεύτηκα. Μπορείς να μου το κάνεις λίγο πιο συγκεκριμένο; Να σου πω για παράδειγμα εγώ έχω γραμμένο αυτό τον κώδικα και ανοίγω το PLCEdit

Code:
	public static void main(String[] args) {
System.out.println("Hello, World");
try {
System.out.println("Opening PLCEdit");
Runtime runTime = Runtime.getRuntime();
Process process = runTime.exec("C:\\Program Files\\PLCEdit\\PLCEdit.exe");
}
catch (IOException e) {
e.printStackTrace();
}

}

Πως μπορώ τώρα να ανομάσω και να αποθηκεύση το αρχείο απο το PLCEdit μέσα από τη JAVA;
Logged
antares
Νεούλης/Νεούλα
*
Gender: Male
Posts: 48


Do you want some...thmmy, darling?


View Profile
Re: Ερώτηση σε JAVA
« Reply #3 on: September 10, 2013, 15:27:17 pm »

Υπέθεσα ότι έχεις τον κώδικα από το exe   Cheesy
Αν τον έχεις το βλέπουμε πως γίνεται. Αλλιώς, έχεις τις εξής 2 επιλογές νομίζω:
  • Δες αν υπάρχει κάποια command line παράμετρος που να σε βοηθάει.
  • Μπορείς απο το java process κανεις monitoring για αλλαγες κάποιο directory και να λαμβάνεις events. Οπότε ορίζεις ενα συγκεκριμενο directory που αποθηκευεις τα αρχεια και τα επεξεργάζεσαι μετα από την java. Δες εδώ:
    http://docs.oracle.com/javase/7/docs/api/java/nio/file/WatchService.html
    http://java.dzone.com/articles/using-java-7s-watchservice
Logged
portinos
Καταξιωμένος/Καταξιωμένη
***
Posts: 264



View Profile
Re: Ερώτηση σε JAVA
« Reply #4 on: September 17, 2013, 17:37:24 pm »

Ευχαριστώ τον antares για τη βοήθειά του, ήταν πολύ χρήσιμη. Για να μην ανοίξω νέο topic θα κάνω ακόμα μια ερώτηση. Έχω τον παρακάτω κώδικα
Code:
package test;

import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardWatchEventKinds;
import java.nio.file.WatchEvent;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;
import java.util.List;


public class test3 {

public static void main(String[] args) {
System.out.println("Hello, World");
new File("C:\\Users\\V\\Documents\\diplwmatiki\\temp").mkdir();
System.out.println("To proswrino arxeio dimiourgithike");
try {
System.out.println("Opening notepad");
Runtime runTime = Runtime.getRuntime();
Process process = runTime.exec("C:\\Windows\\System32\\notepad.exe");
}
catch (IOException e) {
e.printStackTrace();
}

//define a folder root
        Path myDir = Paths.get("C:\\Users\\V\\Documents\\diplwmatiki\\temp");       

        try {
           WatchService watcher = myDir.getFileSystem().newWatchService();
           myDir.register(watcher, StandardWatchEventKinds.ENTRY_CREATE,
           StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds.ENTRY_MODIFY);

           WatchKey watckKey = watcher.take();

           List<WatchEvent<?>> events = watckKey.pollEvents();
           for (WatchEvent event : events) {
                if (event.kind() == StandardWatchEventKinds.ENTRY_CREATE) {
                    System.out.println("Created: " + event.context().toString());
                }
               
                if (event.kind() == StandardWatchEventKinds.ENTRY_MODIFY) {
                    System.out.println("Modify: " + event.context().toString());
                }
            }
                     
           
        }
        catch (Exception e) {
        e.printStackTrace();
            }
     
       

}
}
Αυτός ο κώδικα ανοίγει το σημειωματάριο και εκεί αφού γράψουμε κάτι αποθηκεύουμε στο dokimi.txt μέσα στο φάκελο temp. Η ερώτηση είναι πως μπορούμε να κλείσουμε χρησιμοποιώντας τη JAVA το αρχείο dokimi.txt; Δοκίμασα να κάνω process.destroy();
αλλά μου βγάζει σφάλμα. Έχει κανείς καμιά ιδέα;;; Ευχαριστώ εκ των προτέρων
Logged
antares
Νεούλης/Νεούλα
*
Gender: Male
Posts: 48


Do you want some...thmmy, darling?


View Profile
Re: Ερώτηση σε JAVA
« Reply #5 on: September 17, 2013, 20:55:41 pm »

Τι λάθος σου βγάζει?
Logged
portinos
Καταξιωμένος/Καταξιωμένη
***
Posts: 264



View Profile
Re: Ερώτηση σε JAVA
« Reply #6 on: September 18, 2013, 00:49:26 am »

Όταν βάζω σκέτο process.destroy(); μου βγάζει process cannot be resolved ενώ όταν βάλω
Process process.destroy(); μου βγάζει:
Multiple markers at this line:
-Syntax error on token ".",; expected
-The method destroy() is undefined for the type test3

Το destroy το βάζω αμέσως μετά το for loop
Logged
Δικαστής Μύρτιλος
Καταξιωμένος/Καταξιωμένη
***
Posts: 190



View Profile
Re: Ερώτηση σε JAVA
« Reply #7 on: September 18, 2013, 01:21:24 am »

Το process το έχεις ορίσει μέσα στο try άρα είναι ορισμένο μόνο για εκεί. Δοκίμασε να το ορίσεις απ'έξω.
Logged

Τι είναι η ζωή; Ένα ημίτονο . . .
portinos
Καταξιωμένος/Καταξιωμένη
***
Posts: 264



View Profile
Re: Ερώτηση σε JAVA
« Reply #8 on: September 18, 2013, 10:01:53 am »

Quote from: Δικαστής Μύρτιλος on September 18, 2013, 01:21:24 am
Το process το έχεις ορίσει μέσα στο try άρα είναι ορισμένο μόνο για εκεί. Δοκίμασε να το ορίσεις απ'έξω.

Ναι λειτουργεί έτσι. Σ' ευχαριστώ!
Logged
antares
Νεούλης/Νεούλα
*
Gender: Male
Posts: 48


Do you want some...thmmy, darling?


View Profile
Re: Ερώτηση σε JAVA
« Reply #9 on: September 18, 2013, 10:03:14 am »

Έχεις συντακτικό θέμα νομίζω σχετικά με το που καλείς το process.destroy();

Κάπως έτσι προσπαθησε να βάλεις τον κωδικά σου:

Code:
package test;

import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardWatchEventKinds;
import java.nio.file.WatchEvent;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;
import java.util.List;


public class test3 {

public static void main(String[] args) {
System.out.println("Hello, World");
                Process process = null;
new File("C:\\Users\\V\\Documents\\diplwmatiki\\temp").mkdir();
System.out.println("To proswrino arxeio dimiourgithike");
try {
System.out.println("Opening notepad");
Runtime runTime = Runtime.getRuntime();
process = runTime.exec("C:\\Windows\\System32\\notepad.exe");
}
catch (IOException e) {
e.printStackTrace();
}

//define a folder root
        Path myDir = Paths.get("C:\\Users\\V\\Documents\\diplwmatiki\\temp");       

        try {
           WatchService watcher = myDir.getFileSystem().newWatchService();
           myDir.register(watcher, StandardWatchEventKinds.ENTRY_CREATE,
           StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds.ENTRY_MODIFY);

           WatchKey watckKey = watcher.take();

           List<WatchEvent<?>> events = watckKey.pollEvents();
           for (WatchEvent event : events) {
                if (event.kind() == StandardWatchEventKinds.ENTRY_CREATE) {
                    System.out.println("Created: " + event.context().toString());
                }
               
                if (event.kind() == StandardWatchEventKinds.ENTRY_MODIFY) {
                    System.out.println("Modify: " + event.context().toString());
                }
            }
                     
            if (process != null) {
                process.destroy();
            }

        }
        catch (Exception e) {
        e.printStackTrace();
            }
     
       

}
}
Logged
portinos
Καταξιωμένος/Καταξιωμένη
***
Posts: 264



View Profile
Re: Ερώτηση σε JAVA
« Reply #10 on: September 20, 2013, 22:14:10 pm »

Ακόμη μία ερώτηση, μάλλον τα έχω παίξει seestars seestars Έχω τον παρακάτω κώδικα για να ανοίγω ένα xml αρχείο σε JAVA
Code:
 try {
   

File fXmlFile = new File("test.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
    }
   
    catch (Exception e) {
e.printStackTrace();
    }]

το οποίο δίνει σαν αποτέλεσμα μια λογική έκφραση: a&&b. Τα a,b είναι δύο αρχεία xml και αυτά. Η ερώτηση είναι γίνεται να φτιάξουμε ένα καινούργιο αρχείο xml χρησιμοποιώντας τα αρχεία a και b, τα οποία διαβάζουμε επίσης, αλλά να μην τα κάνουμε απλά merge, αλλά να έχουμε τη λογική πράξη AND;
Logged
antares
Νεούλης/Νεούλα
*
Gender: Male
Posts: 48


Do you want some...thmmy, darling?


View Profile
Re: Ερώτηση σε JAVA
« Reply #11 on: September 21, 2013, 15:43:10 pm »

Πολύ ασαφής η ερώτηση σου... για να απαντηθεί.

Τι σημαίνει να κάνεις AND μεταξύ 2 xml αρχείων;
Αν έχει να κάνει με την δομή των αρχείων αυτών ίσως θα έπρεπε να μας δείξεις και την δομή τους για να έχει νόημα και ο κώδικας που δείχνεις (αλλά μετά πάμε σε επίλυση προβλήματος σε λογικό επίπεδο και όχι απλά "έχω θέμα με την Java").
Logged
portinos
Καταξιωμένος/Καταξιωμένη
***
Posts: 264



View Profile
Re: Ερώτηση σε JAVA
« Reply #12 on: September 30, 2013, 17:21:10 pm »

Quote from: antares on September 21, 2013, 15:43:10 pm
Πολύ ασαφής η ερώτηση σου... για να απαντηθεί.

Τι σημαίνει να κάνεις AND μεταξύ 2 xml αρχείων;
Αν έχει να κάνει με την δομή των αρχείων αυτών ίσως θα έπρεπε να μας δείξεις και την δομή τους για να έχει νόημα και ο κώδικας που δείχνεις (αλλά μετά πάμε σε επίλυση προβλήματος σε λογικό επίπεδο και όχι απλά "έχω θέμα με την Java").


Ναι το πρόβλημα που είχα ήταν σε λογικό επίπεδο, δεν είχε σχέση με τη java. Τώρα έχω και μια άλλη ερώτηση. Έχω τον παρακάτω κώδικα
Code:
 try {
        //Reading an XML file, created above
    File fXmlFile = new File("C:\\Users\\V\\Documents\\diplwmatiki\\temp\\dokimi.xml");
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(fXmlFile);
   
    //optional, but recommended
    //read this - http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-work
    doc.getDocumentElement().normalize();
   
    //Printing the attributes of the XML file
    System.out.println("\nRoot element :" + doc.getDocumentElement().getNodeName());
   
    NodeList nList = doc.getElementsByTagName("file");
   
    System.out.println("----------------------------");
   
    for (int temp = 0; temp < nList.getLength(); temp++) {
   
    Node nNode = nList.item(temp);
   
    System.out.println("\nCurrent Element :" + nNode.getNodeName());
   
    if (nNode.getNodeType() == Node.ELEMENT_NODE) {
   
    Element eElement = (Element) nNode;
   
    System.out.println("File id : " + eElement.getAttribute("id"));
    System.out.println("File_name : " + eElement.getElementsByTagName("name").item(0).getTextContent());
    System.out.println("Katali3i : " + eElement.getElementsByTagName("katali3i").item(0).getTextContent());
   
    }
    try{
   
   
    Element eElement = (Element) nNode;
    ArrayList<String> File_name = new ArrayList<String>();
    File_name.add(eElement.getElementsByTagName("name").item(0).getTextContent());
    System.out.println(File_name);
   
   
    }
    catch (Exception e) {
        e.printStackTrace();
        }
   
    }
   
   
        }
       
        catch (Exception e) {
    e.printStackTrace();
        }
       
        //Creating an list having all files of a directory
       
File folder = new File("C:\\Users\\V\\Documents\\diplwmatiki\\SFBs");
ArrayList<File> files = new ArrayList<File>(Arrays.asList(folder.listFiles()));
 
for (int i = 0; i < folder.length(); i++)
{

System.out.println("\n" +files);
}
files.retainAll(File_name);

και δεν λειτουργεί η τελευταία εντολή. Ξέρω ότι το πρόβλημα είναι ότι συγκρίνω διαφορετικούς τύπους arraylist. Ο ένας τύπος είναι string και ο δεύτερος είναι file. Πώς μπορούμε να το κάνουμε έτσι ώστε να γίνει η σύγκριση, δηλαδή εννοώ ότι θέλω από τα στοιχεία που είναι στη λίστα με τα string να βρίσκω τα αρχεία που έχουν το ίδιο όνομα και να τα βάζω σε μια άλλη λίστα
Logged
antares
Νεούλης/Νεούλα
*
Gender: Male
Posts: 48


Do you want some...thmmy, darling?


View Profile
Re: Ερώτηση σε JAVA
« Reply #13 on: September 30, 2013, 19:01:11 pm »

Ναι έχεις πολλές επιλογές για να το επιτυχείς, κάποιες μπορεί να είναι π.χ.:

1. Χρησιμοποιείς την http://docs.oracle.com/javase/7/docs/api/java/io/File.html#list() για να σου γυρίσει String array και να αφήσεις τον υπόλοιπον κώδικα ως έχει.

2. Αν θέλεις File array χρησιμοποιείς την http://docs.oracle.com/javase/7/docs/api/java/io/File.html#listFiles(java.io.FilenameFilter) και υλοποιείς το φίλτρο.

3. Κάνεις το φίλτρο "με το χέρι", δηλ. loop στα files και κοιτάς κάθε όνομα αν το κρατάς ή οχι, παρόμοιο με το 2 δηλ.
Logged
portinos
Καταξιωμένος/Καταξιωμένη
***
Posts: 264



View Profile
Re: Ερώτηση σε JAVA
« Reply #14 on: September 30, 2013, 20:57:39 pm »

Οκ ευχαριστώ πολύ!!! Κάτι τέτοιο ήθελα. Σόρρυ και για τις συνεχείς ερωτήσεις αλλά δεν έχω και μεγάλη εμπειρία με την java
Logged
Pages: [1] 2 Go Up Print
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Scribbles2 | TinyPortal © Bloc | XHTML | CSS
Loading...