linux - java - path

Giorgos Keramidas keramida at ceid.upatras.gr
Wed Oct 6 12:40:44 EEST 2004


On 2004-10-06 12:08, axel <axelmangr at freemail.gr> wrote:
> Giorgos Keramidas wrote:
> >Το πρόγραμμά σου φταίει.  Δείξε μας και το source για να σου πούμε τι
> >ακριβώς φταίει.
>
> Πολύ άμεση και πολύ direct απάντηση. Ευχαριστώ και συνεχίζω...
>
> ¶υτή είναι η 1 από τις πολλές κλάσεις (Η main)

Συγγνώμη αν ακουστεί κακία αλλά αν έχουν όλες το ίδιο άθλιο indentation κι
είναι το ίδιο αντικειμενοστραφώς γραμμένες, θα ανακαλύψεις κι άλλα bugs με
τον καιρό.

: package mp3;
: import ....
:
: public class mp3 extends JFrame
: {
:   public JToolBar toolBar;
:   private String localDb;
:
:   public mp3()
:   {
:
:     try {
:       UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
:     } catch (Exception e) {
:       e.printStackTrace();
:     }
:
:     //initializes the class so as to use some of it's methods
:     generalMethods gm = new generalMethods();
:
:     //reads the file that contains the database
:     localDb = gm.getDBfromFile("scripts/mp3.ini");
:     if (localDb.equals("null"))
:     {
:        ...

> Η μέθοδος getDBfromFile() παίρνει μέσα ένα file και διαβάζει διάφορα
> configuration details για να τρέξει το πρόγραμμα.

Για κοίτα καλύτερα πως ακριβώς προσπαθεί να προσπελάσει το αρχείο
"scripts/mp3.ini".  Με relative pathname.  Το οποίο relative pathname το
λειτουργικό σου μπορεί να το κάνει lookup από οποιοδήποτε σημείο γουστάρει.

Π.χ. κάτω από τον κατάλογο που ξεκίνησες το πρόγραμμά σου.

Ένας καλός τρόπος είναι να κάνεις το πρόγραμμά σου πιο ``configurable''
περνώντας του ένα configuration file στο command line, το οποίο π.χ. μπορεί να
περιέχει τα βασικά pathnames κάτω από τα οποία θα κάνει lookup για αρχεία
"*.ini".  Τότε θα μπορείς να κάνεις κάτι τέτοιο:

    public class mp3 extends JFrame
    {
        static private String configPath;
        private ConfigFile *conf;

        public setConfigPath(String newPath) {
            configPath = newPath;
        }

        public mp3 () {
            try {
                conf = new ConfigFile(configpath, "mp3");
            } catch (ConfigFileMissingException e) {
                ...
            }
        }
    }

Το static member configPath ανήκει από κοινού σε όλα τα instances του mp3
class και μπορείς να το θέσεις πριν καν δημιουργήσεις αντικείμενα mp3:

        mp3.setConfigPath("/usr/local/etc/myprogram");

Με μια κατάλληλα φτιαγμένη ConfigFile() class μπορείς να οργανώσεις το πως,
που, γιατί, πότε και με ποιο τρόπο γράφονται ή διαβάζονται τα config files
από το ConfigPath που έχεις ορίσει.


                                ``Think Big!''


Γ.Κ.




More information about the Linux-greek-users mailing list