# datei von server lesen - falsche version



## Guest (7. Apr 2006)

hallo!

info: kein sicherheitsproblem  :wink: 

ich arbeite gerade an einem applet. es soll eine datei am server schreiben und auslesen.
funktioniert auch beides.
habe aber folgendes problem. es wird die datei immer wie zu appletstart angezeigt. also wenn ich etwas ändere wird es zwar brav gespeichert. öffne ich allerdings die datei erneut läd es trotzdem die alte version der datei.

lesen:

```
private String dateiLesen( String dName )
    {
        String textAusDatei = "";
        try
        {
        	URL url = new URL( getCodeBase(), dName );
        	BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(url.openStream()));
            String neueZeile = "";
            while(( neueZeile = bufferedReader.readLine()) != null)
            {
                 textAusDatei  += (neueZeile + "\n");
            }
            bufferedReader.close();
        }
        catch(MalformedURLException e)
        {
            System.out.println("URL nicht gefunden" );
        }
        catch(IOException e )
        {
        	System.out.println("Input Output-Problem" );
        }
        return textAusDatei;
    }
```

werden die dateien die im appletverzeichnis liegen nur 1malig geladen?


----------



## hirion (7. Apr 2006)

sorry! ich habe vergessen mich einzuloggen, das bin ich da oben
und da ich den beitrag jetzt nicht editieren kann das "lesen" vor dem code ist kein plumper befehl an euch  :wink: sondern sollte "auslesen" bedeuten.


----------



## hirion (8. Apr 2006)

hab jetzt alles auf php umgestellt.
ich poste hier mal den code damit sich andere die sucharbeit ersparen.

die schnittstelle kontaktiert das script und sendet post variablen und erhälte eine antwort:

```
private String delegateToServer(String data, String path)
	{
		try
		{
			// Send data
			URL url = new URL(getCodeBase(), path);
			URLConnection conn = url.openConnection();
			conn.setDoOutput(true);
			OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
			wr.write(data);
			wr.flush();
			
			//Get the response
			BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
			String line;
			String response="";
			while ((line = rd.readLine()) != null) 
			{
				response += line + "\n";
			}
			rd.close();
			wr.close();
			return response;
		} 
		catch (Exception e) 
		{
			System.out.println(e.toString());
			return e.toString();
		} 
	}
```

so könnten öffnen und speichern methoden aussehen (Bsp. für den inhalt von data: "key1=value1&key2=value2":

```
private void open()
	{
		try 
		{
			// Construct data
			String data = URLEncoder.encode("file", "UTF-8") + "=" + URLEncoder.encode(dateiName, "UTF-8");
			String path = "server/open.php";
			this.textBereich.setText(this.delegateToServer(data, path));
		}
		catch(Exception e)
		{
			System.out.println(e.toString());
		}
	}
	
	private void save()
	{
		try 
		{
			// Construct data
			String data = URLEncoder.encode("file", "UTF-8") + "=" + URLEncoder.encode(dateiName, "UTF-8");
			data += "&" + URLEncoder.encode("content", "UTF-8") + "=" + URLEncoder.encode(textBereich.getText(), "UTF-8");
			String path = "server/save.php";
			this.delegateToServer(data, path);
		}
		catch(Exception e)
		{
			System.out.println(e.toString());
		}
	}
```

und nund noch die php skripten:
öffnen:

```
<?php
$filename = '../' . $_POST['file'];
$conn = fopen($filename, 'r');
$buffer="";
while (!feof($conn)) {
   $buffer .= fgets($conn);
}
fclose($conn);
echo $buffer;
?>
```

speichern:

```
<?php
$filename = '../' . $_POST['file'];
$content = stripslashes($_POST['content']);
$conn = fopen($filename, 'w');
fwrite($conn, $content);
fclose($conn);
?>
```

so jetzt ist eigentlich alles zusammengetragen was man zum öffnen und schreiben von dateien auf dem server braucht. hoffe es hilft euch.

p.s.: in den php files sollte noch ein sicherheitsmechanismus eingebaut werden

edit: stripslashes funktion zu save.php hinzugefügt


----------

