Antwort
 
Themen-Optionen
Alt 01.09.2005, 20:35 Nach oben    #1
WurstBrot
Gast
 
Beiträge: n/a
Standard ftp client

hi,
ich hab ein kleines AppletGame geschrieben, welches aber noch keine Highscore besitzt. Also hab ich mir
überlegt, dass die Highscore immer wieder als Datei auf meinen FTP Server gespeichert wird.

Da ich aber von FTP nicht genug Ahnung hab, um mir selbst einen Client zu schreiben,
hab ich mir die edtftpj - library heruntergeladen und daraus ein Programm geschrieben, das
eine Verbindung zu meinen FTP Server herstellt. Nur komm ich jetzt mit der beschrieben
Methoden-Definition, die die Daten vom Server holt nicht ganz klar:


Code:
get

public void get(java.io.OutputStream destStream,
				java.lang.String remoteFile)
		 throws java.io.IOException,
				FTPException

	Get data from the FTP server. Uses the currently set transfer mode.

	Specified by:
		get in interface FTPClientInterface

	Parameters:
		destStream - data stream to write data to
		remoteFile - name of remote file in current directory 
	Throws:
		java.io.IOException 
		FTPException
und zwar soll das Programm eine Datei vom Server holen und sie in einen Stream speichern,
also sie nicht auf der Festplatte lagern (da ja das bestimmt vom Applet verweigert wird);

ich hab mal als Test einen eigenen FTPServer aufgesetzt und folgende Klasse geschrieben, aber das Programm bringt immer die
Fehlermeldung "null":

PHP-Code:
import java.lang.*;
import java.io.*;
import com.enterprisedt.net.ftp.FTPClient;
import com.enterprisedt.net.ftp.FTPTransferType;
import com.enterprisedt.net.ftp.FTPConnectMode;

public class 
ftpclient
 
{
     
String host "host";
     
String user "user";
     
String password "password";
     
FTPClient ftp;
     
OutputStream os;
     
    public 
ftpclient()
     {
         try
          {
             
ftp = new FTPClient();
      
            
ftp.setRemoteHost(host);
     
            
ftp.connect();
            
System.out.println("connect");
            
ftp.login(userpassword);
            
System.out.println("connected");
     
            
ftp.setConnectMode(FTPConnectMode.PASV);
            
ftp.setType(FTPTransferType.ASCII);
    
            
ftp.get(os"file.exe");
            
System.out.println("fertig");
            
            
ftp.quit();
          }
        catch(
Exception e)
          {
              
System.out.println(e.getMessage());
          }
      }
 } 
Danke schonmal im vorraus
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.09.2005, 23:44 Nach oben    #2
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 575
Standard

Ohne die Bibliotheken zu kennen mit denen du arbeitest:

Du initialisierst den OutputStream (os) nirgends.

OuptutStream os wird zwar als Klassenvariable/objekt angelegt, aber nirgends initialisiert (os = new OutputStream)... daher die Null-Pointer-Exception.

Du solltest übrigens in dem catch-Block zusätzlich noch
e.printStackTrace();
einfügen, das gibt zusätzliche Infos zu solchen Fehler aus, inkl. Zeilennummer und Klasse der Position des Fehlers.

Gruß
Sparrow
sparrow ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.09.2005, 07:11 Nach oben    #3
Erfahrener Benutzer
 
Registriert seit: 16.11.2005
Beiträge: 242
Standard

Zitat:
Zitat von sparrow
Du solltest übrigens in dem catch-Block zusätzlich noch
e.printStackTrace();
einfügen, das gibt zusätzliche Infos zu solchen Fehler aus, inkl. Zeilennummer und Klasse der Position des Fehlers.

Das ist Pflichtkür!!
Die Zeile kann erheblich Zeit sparen.
nove ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.09.2005, 18:34 Nach oben    #4
WurstBrot
Gast
 
Beiträge: n/a
Standard

ich kann die Variable os vom Typ OutputStream gar nicht initialisieren, da ja die Klasse als abstract definiert ist
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.09.2005, 20:01 Nach oben    #5
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.110
Standard

Vielleicht kannst du ein java.io.ByteArrayOutputStream verwenden und die Bytes dann anschliessend in einen String einlesen. (String str = new String(os.getBytes()); oder so)
__________________
Patrick Gotthardts Weblog.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.09.2005, 20:22 Nach oben    #6
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 575
Standard

Gibst du mal den Link zu der lib, ann schau ich mal in die API der lib.

Was genau möchtest du denn machen? Eine Exe-Datei hochladen? Bist du dir sicher, dass ftp.ger(..); dafür richtig ist? Klingt so als würde man mit get eher etwas holen, aber wie gesagt, ich kenne die Bibliothek nicht.

Stellt die Bibliothek keine Möglichkeit zur Verfügung um den entsprechenden OutputStream zu erzeugen?
sparrow ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.09.2005, 19:35 Nach oben    #7
WurstBrot
Gast
 
Beiträge: n/a
Standard

hab das Problem gelöst:
man darf kein OutputStream - Objekt erzeugen, sondern man muss eine abgeleitete Klasse nehmen. Ich hab mich in diesem Fall für den ByteArrayOutputStream entschieden.

Jetzt hab ich aber ein weiteres Problem:
Ich kann zwar jetzt die Textdatei "highscore.txt" von meinem Server laden und in einen Stream speichern, aber keine einzelnen Zeilen auslesen. Ich hab schon den Stream in einen String umwandeln lassen, aber keine Methode gefunden, wie ich auch es den String einzelne Zeilen auslesen kann
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.09.2005, 07:47 Nach oben    #8
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.110
Standard

Möglichkeit 1:
Code:
BufferedReader reader = new BufferedReader(new StringReader(deinString));
Möglichkeit 2:
Code:
String[] lines = deinString.split("\r\n|\n|\r");
__________________
Patrick Gotthardts Weblog.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
VCS ohne Server über FTP pago Tools, Server, Betriebssysteme 10 06.08.2007 14:59
WebDAV oder FTP? Jan Tools, Server, Betriebssysteme 15 11.07.2007 14:06
Server - Client: Befehle und Identifizierung WarrenFaith Allgemeine Java-Programmierung 3 08.08.2006 20:09
endlosschleife (+ftp) N!cKY PHP-Programmierung 5 30.03.2006 16:55
FTP Client in Java? tuxsymptom Allgemeine Java-Programmierung 4 14.08.2004 22:06


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:04 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

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