PrintWriter schreibt nix

Hey Liebe Javafans,

Ich habe ein kleine Java Programm programmiert, das bestimmte Strings sucht sie dann ersetz und schliesslich wieder in ein File schreibt.

Jedoch ist das Problem, das das File leerbleibt also der PrintWriter nichts schreibt.


import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.PrintWriter;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

import java.applet.*;

public class Client extends Applet {


	public void init()
	{
		
		JFrame frame = new JFrame("Habbo Clientersteller | Codet in Java (Steekarlkani) ");
		
		JButton button = new JButton("Starte Clientersteller");
		final JTextField clientpath = new JTextField(15);
		final JTextField ipadresse = new JTextField(15);
		final JTextField pathzurswfs = new JTextField(15);
		final JTextField port = new JTextField(15);
		
		frame.getContentPane().setLayout(new GridLayout(5, 4));
		frame.getContentPane().add(new JLabel("Wie heisst dein Client Datei? -> (Muss im gleichen Ordner sein wie das Applet!) "));
        frame.getContentPane().add(clientpath);
        frame.getContentPane().add(new JLabel("Welche IP-Adresse soll angepasst werden (im Client)"));
        frame.getContentPane().add(ipadresse);
        frame.getContentPane().add(new JLabel("Welcher Clientport soll angepasst werden (im Client) "));
        frame.getContentPane().add(port);
        frame.getContentPane().add(new JLabel("Dein Pfad zur Swfs (Beispiel: http://deinedomain.com/swfs) "));
        frame.getContentPane().add(pathzurswfs);
        frame.getContentPane().add(button);
		frame.setSize(1000, 1000);
		frame.setVisible(true);
	
		button.addActionListener(new ActionListener(){
			
			public void actionPerformed(ActionEvent arg0) {
					
				try
				{
			         FileReader freader = new FileReader("client2.txt");
			         BufferedReader reader = new BufferedReader(freader);
			        
			         String line = reader.readLine();
			         
			       if(line != null)
			       {
			    	   PrintWriter buff = new PrintWriter(clientpath.getText());
			    	   
			        if(line.indexOf("external.variables.txt") > -1)
			        {
			            if(line.indexOf("<?php echo $path; ?>/r63/r63/furnidata.txt") > -1)
			            {
			            	line = line.replace("<?php echo $path; ?>/r63/r63/external.variables.txt", pathzurswfs.getText() + "/external.variables.txt");
			            	buff.write(line);
			            }
			        }
			        	 
			        if(line.indexOf("external.texts.txt") > -1)
			        {
			            if(line.indexOf("<?php echo $path; ?>/r63/r63/external.texts.txt") > -1)
			            {
			            	line = line.replace("<?php echo $path; ?>/r63/r63/external.texts.txt", pathzurswfs.getText() + "/external.texts.txt");
			            	buff.write(line);
			            }
			        }
			        	 
			        if(line.indexOf("furnidata.load.url") > -1)
			        {
			           if(line.indexOf("<?php echo $path; ?>/r63/r63/furnidata.txt") > -1)
			           {
			            	line = line.replace("<?php echo $path; ?>/r63/r63/furnidata.txt", pathzurswfs.getText() + "/furnidata.txt");
			            	buff.write(line);
			           }
			        }
			             
			        if(line.indexOf("productdata.load.url") > -1)
			        {
			            if(line.indexOf("<?php echo $path; ?>/r63/r63/productdata.txt") > -1)
			            {
			            	line = line.replace("<?php echo $path; ?>/r63/r63/productdata.txt", pathzurswfs.getText() + "/productdata.txt");
			            	buff.write(line);
			            }
			        }
			             
			        if(line.indexOf("flash.client.url") > -1)
			        {
			             if(line.indexOf("<?php echo $path; ?>/r63/r63") > -1)
			             {
			            	line = line.replace("<?php echo $path; ?>/r63/r63", pathzurswfs.getText());
			            	buff.write(line);
			             }
			        }
			             
			        if(line.indexOf("base") > -1)
			        {
			            if(line.indexOf("<?php echo $path; ?>/r63/r63/") > -1)
			            {
			            	line = line.replace("<?php echo $path; ?>/r63/r63/", pathzurswfs.getText());
			            	buff.write(line);
			            }
			        }
			             
			        if(line.indexOf("clientUrl") > -1)
			        {
			           if(line.indexOf("<?php echo $path; ?>/r63/r63/Habbo.swf") > -1)
			           {
			            	line = line.replace("<?php echo $path; ?>/r63/r63/Habbo.swf", pathzurswfs.getText() + "/Habbo.swf");
			            	buff.write(line);
			           }
			        }
			             
			             
			        if(line.indexOf("connection.info.host") > -1)
			        {
			            if(line.indexOf("kuppa.no-ip.info") > -1)
			            {
			            	line = line.replace("kuppa.no-ip.info", ipadresse.getText());
			            	buff.write(line);
			            }
			        }
			             
			             
			        if(line.indexOf("connection.info.port") > -1)
			        {
			            if(line.indexOf("30000") > -1)
			            {
			            	line = line.replace("30000", port.getText());
			            	buff.write(line);
			            }
			        }   

			    	JOptionPane.showMessageDialog(null, "Client wurde umgeschrieben, und kann jetzt benutzt werden.");
			    	
			    	buff.close();
			    	reader.close();
			   }
			       
			   			       
				}catch(Exception ex){
					
					JOptionPane.showMessageDialog(null, ex.toString());
				}
				
			}});
		
		}	
}

Ich verzweifle schon daran, und hoffe auf Hilfe.

Liebe Grüsse Stefan.

[QUOTE=Steekarlkani]Ich verzweifle schon daran…[/QUOTE]Vorstellbar… :wink:
Neu in Java? Nunja, zumindest sind dir die Restriktionen für Applets nicht bekannt, zumindest jene, die das lokale Filesystem (maw.: das File-Protokoll oder andere Dinge mit File) betreffen. Kurzum: Den FileReader kannst du vergessen.
Ich nehme mal an, dass „client2.txt“ auch nicht auf dem Rechner liegt, auf welchem das Applet ausgeführt wird, sondern auf jenem, wo es gehostet wird. Schon benötigst du ein Servlet oder entsprechenden ServerCode (PHP oder was auch immer) mit welchem du ganze Dateien manipulieren kannst.

Nein ich bin nicht neu in Java, und die Datei liegt im gleichen Ordner wie das Java Projekt.

Liebe Grüsse.

[QUOTE=Steekarlkani]Nein ich bin nicht neu in Java, und die Datei liegt im gleichen Ordner wie das Java Projekt.

Liebe Grüsse.[/QUOTE]Dann gilt trotzdem nach wie vor, dass was ich über Applets und FileWasAuchImmer sagte… Das funktioniert nicht, bzw. nur bei signierten Applets. FileWasAuchImmer beziehen sich auf jenes Dateisystem, auf welchem das Applet per Browser aufgerufen wurde. Selbst wenn es der selbe Rechner sein sollte, auf welchem es gehostet wird, läuft es innerhalb des Browsers in einer Sandbox und hat somit die selben Rechte als wenn es von wo anders ausgeführt würde, nämlich gar keine, solange nicht signiert.
Was du bräuchtest, wäre eine URL zu einer schreibbaren Datei auf dem Applet-Host, damit Dinge wie “PrintWriter out = new PrintWriter(writableURL.openConnection().getOutputStream())” funktionieren. Ebensogut könnte man aber auch mittels Applet einen kompletten HTTP-Request samt POST-Data an ein PHP-Script senden, wodurch das Applet aber selbst bereits wieder ein echter Overkill wäre, weil dann könnte man es ja gleich per PHP oder JSP/Servlet realisieren.

OK villeicht noch nicht solange in Java dabei, aber wie schon gesagt das File liegt im Ordner (txt Datei).

Liebe Grüsse Stefan Gräni.

[QUOTE=Steekarlkani]OK villeicht noch nicht solange in Java dabei, aber wie schon gesagt das File liegt im Ordner (txt Datei).[/QUOTE]Wie erklär’ ichs am besten… Der Ordner interessiert nicht! Das Applet hat keinen Zugriff auf irgendwelche Dateisysteme (solange nicht signiert). Das Applet hat nur Zugriff auf die Domain (URL und subURLs) von der es geladen wurde.

Ok Danke dann ist das ja geklärt :slight_smile:

Liebe Grüsse.

Geklärt? Nicht wirklich. Du erstellst da ein Applet, machst aber einen eigenen Frame auf. SOLL das ganze wirklich ein Applet sein? Also SOLL das ganze auf einer Webseite eingebettet sein? Nicht jedes Java-Programm muss ein Applet sein :wink: Du kannst auch eine ganz normale Anwendung erstellen, und mit der dann natürlich nach Herzenslust irgendwelche Dateien manipulieren…

EDIT: So wie es beim ersten Überfliegen aussieht, reicht es vielleicht schon, das ganze von

public class Client extends Applet {
    public void init()
    {
...

zu ändern in

public class Client {
 
    public static void main(String args[])
    {
...

Da scheint ja nichts Applet-spezifisches drin zu sein.

[QUOTE=Marco13]Geklärt? Nicht wirklich. Du erstellst da ein Applet, machst aber einen eigenen Frame auf. SOLL das ganze wirklich ein Applet sein? Also SOLL das ganze auf einer Webseite eingebettet sein? Nicht jedes Java-Programm muss ein Applet sein :wink: Du kannst auch eine ganz normale Anwendung erstellen, und mit der dann natürlich nach Herzenslust irgendwelche Dateien manipulieren…

EDIT: So wie es beim ersten Überfliegen aussieht, reicht es vielleicht schon, das ganze von

public class Client extends Applet {
    public void init()
    {
...

zu ändern in

public class Client {
 
    public static void main(String args[])
    {
...

Da scheint ja nichts Applet-spezifisches drin zu sein.[/QUOTE]Evtl. Die Lösung… Ich hingegen habe das Applet nur als „Launcher“ für das Backend einer Internetpresents gesehen. Wenn man’s nicht braucht, dann weg damit. Allerdings läuft die Anwendung dann auch nicht mehr im Browser. :wink: