Dringende Frage bzgl. meines Codes

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Also ich hab das jetzt so nach den Vorschlägen die so gemacht
wurden gelöst. klappt alles auch soweit ganz gut doch nun hab ich
einen anderen fehler. er kann in der klasse einlesen leider die
export datei nicht finden. hoffe hier kann mir jemand helfen,
ich würde mich freuen wenn das ich mein erster java projekt
heute abschliessen könnte. unten mal die quellcodes. schonmal
danke im vorraus.

klasse samples


Code:
public class Samples  { 
        
        public void Samples(File datei) 
        {        
                //Zu öffnende Datei angebeben 
        //        File datei = new File ("amazonmay27.txt"); 
                //Reader 
                InputStreamReader isr; 
                BufferedReader br; 
                FileInputStream fis; 
                
                String zeile; //= null; 
                File newfile = new File("export.txt");{ 
                try { 

                    fis = new FileInputStream(datei); 
                    isr = new InputStreamReader(fis); 
                    br = new BufferedReader(isr); 
                    FileWriter fileWriter = new FileWriter(newfile); 
                    
                    while ((zeile = br.readLine()) != null) { 
                            fileWriter.write( zeile + "\r\n");  
                    } 
                    fileWriter.close(); 
                    br.close(); 
                } catch (Exception e) {} 
        
                } 
        } 
}


klasse einlesen

Code:
public class einlesen { 
          
          public einlesen() 
          { 
            File amazonmay27=new File("export.txt"); 
                  File outamazon=new File("outFile.txt"); 
            LinkedList ll=new LinkedList(); 
            
            /** READ FROM FILE */ 
            try { 
              // Create a file reader and connect 
              // a buffered reader to the file reader 
              FileReader fr=new FileReader(amazonmay27); 
              BufferedReader in =new BufferedReader(fr); 
              
              // Read lines and put in list 
              // break when empty line 
              String line=""; 
              for(;;){ 
                line=in.readLine();//read one line 
                if (line==null || line.equals("")) break; 
                else ll.addLast(line); 
              }  
              
              in.close(); 
            }catch(IOException ioe) { 
              System.err.println ("Error reading file "+ioe); 
            } 
            
            /** MAKE A CHANGE */ 
           // ll.addFirst("This string is added first"); 
            
            
            /** WRITE TO FILE */ 
            try{ 
              // Create a file output stream and connect 
              // a print stream to the output stream 
              FileOutputStream out = new FileOutputStream(outamazon); 
              PrintStream p = new PrintStream(out); 

              // write list to file 
              for(int i=0;i < ll.size();i++){ 
                p.println ((String)ll.get(i)); //print one line    
              } 

              p.close(); 
            } 
            catch (IOException ioe) { 
              System.err.println ("Error writing to file "+ioe); 
            }      
            amazonmay27.delete(); 
          } 
        }

er gibt mir eine fehlermeldung raus : Error reading file java.io.FileNotFoundException: export.txt (Das System kann die angegebene Datei nicht finden)


er kann anscheinend die export.txt nicht lesen in der klasse einlesen. anscheind wird sie gar nicht erst erzeugt. dieses problem trat erst nach meinen abänderung aus, sodass ich zur laufzeit dateien einlesen kann.

der user keiner hatte mir da im gestrigen thread weitergeholfen.

schonmal danke im vorraus[/code]
 

MASTERmind

Bekanntes Mitglied
na wo liegt den die datei???

vielleicht so:
"laufwerk:/export.txt"???


EDIT:

Ich musste ihm immer sagen wo genau er die datei hinschreiben soll(s.o.)

Klassen-Namen bitte groß schreiben :meld:
 
S

stev.glasow

Gast
Wirft die Samples vieleicht auch eine Exception?

Code:
catch (Exception e) {}
 ???
}

Existiert die Datei?
 
G

Guest

Gast
also daran liegts auf jeden fall nicht. irgendwie wird in der klasse sample die export datei anscheinend nicht erstellt ;.(
 

mic_checker

Top Contributor
dann poste mal deinen ganzen code - hast du mal auf der festplatte nachgeguckt ob die datei korrekt erzeugt wird im richtigen Pfad ?
 
G

Guest

Gast
nein die samples wirft anscheinend keine exception. aber ich muss auch ehrlich zugeben das ich nicht so super fit in java bin .... bin noch in der anfangsphase :roll: :roll:
 
S

stev.glasow

Gast
???:L Sag ich doch. Guck doch mal ob er eine Exception wirft:

Code:
catch (Exception e) {}
    e.printStackTrace();
}

[edit] Da stand aber eben noch was anderes :wink:
 
G

Guest

Gast
ok hier mal der ganze code meine applikation.

aufrufer klasse
Code:
public class Caller {

	public static void main(String[] args) {
	
	Gui_swing gui = new Gui_swing();
	TextFileFilter filter = new TextFileFilter();
	}
}

gui mit actionevent

Code:
import javax.swing.*;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.event.*;
import java.io.File;

public class Gui_swing extends Frame implements ActionListener, WindowListener  
{
	//Deklaration
	static Gui_swing myapp;
	static JFileChooser f1 = new JFileChooser();
	static JButton ch = new JButton("icon");
	static JButton button_ok = new JButton("OK");
	static JButton button_can = new JButton("Cancel");
	static JButton button_gen = new JButton("Generate");
	static JTextField text_ch = new JTextField(20);

	public Gui_swing() 
	{
		//Eigenschaften Zuweisung
		setLayout(new BorderLayout());
		setSize(300,180);
		addWindowListener(this);
		//Panel erzeugen und zuweisen
		JPanel pOben = new JPanel();
		pOben.setLayout(new FlowLayout(FlowLayout.CENTER));
		add(pOben,BorderLayout.NORTH);
		
		JPanel pUnten = new JPanel();
		pUnten.setLayout(new FlowLayout());
		add(pUnten,BorderLayout.SOUTH);
		
		JPanel pMitte = new JPanel();
		pMitte.setLayout(new FlowLayout());
		add(pMitte,BorderLayout.CENTER);
		
		JPanel p_ch = new JPanel();
		JPanel p_text_ch = new JPanel();
		
		//Listener zuweisen
		ch.addActionListener(this);
		p_ch.add(ch);
		
		text_ch.setEditable(false);
	
		p_text_ch.add(text_ch);
		pMitte.add(p_ch);
		pMitte.add(p_text_ch);
		
		button_ok.addActionListener(this);
		pUnten.add(button_ok);
		button_gen.addActionListener(this);
		pUnten.add(button_gen);
		
		button_can.addActionListener(this);
		pUnten.add(button_can);
		
		JLabel label_1 = new JLabel("Generating Tool");
		pOben.add(label_1);		
		
		setVisible(true);
		
		Samples funk1 = new Samples();
		funk1.Samples(f1.getSelectedFile());
	}
	public void actionPerformed(ActionEvent e)
	{
		if(e.getSource()==ch)
		{
		//	
			f1.showOpenDialog(f1);
			File f;
			f = f1.getSelectedFile();
			text_ch.setText(f.getAbsolutePath());			
		}
		else if(e.getSource()==button_can)
		{
			System.exit(0);
		}
		else if(e.getSource()== button_ok)
		{
			System.exit(0);
		}
		else if(e.getSource()== button_gen)
		{
			Samples funk1 = new Samples();
			einlesen funk2 = new einlesen();
		}
	}	

	public void windowClosing(WindowEvent ev) 
	  { 
	    setVisible(false); 
	    dispose(); 
	    System.exit(1); 
	  } 
	  public void windowActivated(WindowEvent ev) { } 
	  public void windowClosed(WindowEvent ev) { } 
	  public void windowDeactivated(WindowEvent ev) { } 
	  public void windowDeiconified(WindowEvent ev) { } 
	  public void windowIconified(WindowEvent ev) { } 
	  public void windowOpened(WindowEvent ev) { } 
	  }

samples klasse

Code:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import javax.swing.*;

public class Samples  {
	
	public void Samples(File datei)
	{	
		//Zu öffnende Datei angebeben
	//	File datei = new File ("amazonmay27.txt"); 
		//Reader
		InputStreamReader isr; 
		BufferedReader br; 
		FileInputStream fis; 
		
		String zeile = null; 
		File newfile = new File("export.txt");{
		try { 

		    fis = new FileInputStream(datei); 
		    isr = new InputStreamReader(fis); 
		    br = new BufferedReader(isr);
		    FileWriter fileWriter = new FileWriter(newfile);
		    
		    while ((zeile = br.readLine()) != null) {
		    	fileWriter.write( zeile + "\r\n");  
		    }
		    fileWriter.close();
		    br.close();
		} catch (Exception e) {}
	
		}
	}
}

einlesen klasse

Code:
import java.io.*;
import java.util.LinkedList;

public class einlesen {
	  
	  public einlesen()
	  {
	    File amazonmay27=new File("export.txt");
	  	File outamazon=new File("outFile.txt");
	    LinkedList ll=new LinkedList();
	    
	    /** READ FROM FILE */
	    try {
	      // Create a file reader and connect 
	      // a buffered reader to the file reader
	      FileReader fr=new FileReader(amazonmay27);
	      BufferedReader in =new BufferedReader(fr);
	      
	      // Read lines and put in list
	      // break when empty line
	      String line="";
	      for(;;){
	        line=in.readLine();//read one line
	        if (line==null || line.equals("")) break;
	        else ll.addLast(line);
	      }  
	      
	      in.close();
	    }catch(IOException ioe) {
	      System.err.println ("Error reading file "+ioe);
	    } 
	    
	    /** MAKE A CHANGE */
	   // ll.addFirst("This string is added first");
	    
	    
	    /** WRITE TO FILE */
	    try{
	      // Create a file output stream and connect 
	      // a print stream to the output stream
	      FileOutputStream out = new FileOutputStream(outamazon);
	      PrintStream p = new PrintStream(out);

	      // write list to file
	      for(int i=0;i < ll.size();i++){
	        p.println ((String)ll.get(i)); //print one line   
	      }

	      p.close();
	    }
	    catch (IOException ioe) {
	      System.err.println ("Error writing to file "+ioe);
	    }     
	   // amazonmay27.delete();
	  }
	}

thats it. es soll zur laufzeit eine txt datei eingelesen werden, danach soll sie bearbeitet werden nach dem angegebenem muster und als outfile.txt gespeichert werden. das programm lief als ich im code festgelegt habe, welche datei eingelesen werden soll. als ich angefangen habe es so umzubauen das man während der laufzeit eine datei über den filechooser ein datei einlesen kann, waren die probleme auf einmal da.

schonmal ein fettes danke für eure hilfe.
 
S

stev.glasow

Gast
in Samples steht das ja immer noch so drin:
Code:
catch (Exception e) {}
 
}

:cry:
 
S

stev.glasow

Gast
Code:
catch (Exception e) {}
    e.printStackTrace();
}

Macht die Hitze, hab vorhin auch gedacht, dass du deinen Beitrag editiert hast, was als gast gar nicht geht.
Aber guck mal ob e.printStackTrace(); dir was ausgibt.
 
G

Guest

Gast
nö nix soweit ... ich steh gerade einfach nur total auf dem schlauch :cry:
 
S

stev.glasow

Gast
Dann weiß ich auch nicht *schulternzuck* war auch nur eine Idee.
Was ich nicht verstehe ist, warum das Samples funk1 = new Samples(); überhaupt kompiliert wird. Solch einen Konstruktor gibt es doch gar nicht, nur den "public void Samples(File datei)""

Und das sowas geht
Code:
 Samples funk1 = new Samples();
funk1.Samples(f1.getSelectedFile());
ist mir auch neu.
 
G

Guest

Gast
ja hast du oder die anderen vielleicht einen anderen vorschlag wie ich es schaffe, während der laufzeit über den file chooser eine datei einzulesen, sodass sie dananch weiter bearbeitet werden kann?
 
G

Gast

Gast
ich weiß gerade selber echt nicht mehr weiter und will endlich dieses letzte problem beheben .... ;-(
 
G

Gast

Gast
der einzigste fehler den ich bekommme ist error reading that file oder so ähnlich
 
S

stev.glasow

Gast
Was für einen Compiler verwendest du ? javac? Hast du auch nach dem du die Änderung gemacht den Code nochmal kompiliert? Kompilierst du auch die richtigen Dateien?
Ich würde echt meinen morgigen Döner darauf verwetten, dass der Code so nicht in Ordnung ist.

Denn hier ""Samples funk1 = new Samples();"" sollte er eigentlich schon rum meckern.
und bei sowas funk1.Samples(nFile); fängt meiner an zu weinen.

Oder ich hab echt schon nen Sonnenstich.
 
G

Guest

Gast
ich verwende eclipse und er meckert echt nicht rum. döner werd ich mir wohl auch gleich holen gehen wenn ich hier nicht mehr vorran komme 8)
 
G

Gast

Gast
der fehler liegt darin, dass er nach dem die datei eingelesen wird über den filechooser das nicht so abarbeitet wie in der klasse samples und dann die datei export.txt erstellt. die ist nämlich nötig , da sie von der klasse einlesen danach weiterbearbetet wird und gelöscht wird. also irgendwo hackt es nach dem einlesen daran, dass er die eingelesene datei bearbeitet und unter export.txt speichert. wenn ich eine leere export.txt datei anlege und sie in den ordner lege und dann das programm starte ist es kein problem und ich bekomme auch keinen fehler.nur ist dann auch das outfile.txt natürlich leer.....!
 

Wildcard

Top Contributor
stevg hat gesagt.:
Ich würde echt meinen morgigen Döner darauf verwetten, dass der Code so nicht in Ordnung ist.
Denn hier ""Samples funk1 = new Samples();"" sollte er eigentlich schon rum meckern.
und bei sowas funk1.Samples(nFile); fängt meiner an zu weinen.
Schade um deinen Döner. :D
Der Code ist (zumindest syntaktisch) korrekt.
Code:
		     Samples funk1 = new Samples();
		      funk1.Samples(new File(""));
funktioniert hier da
Code:
public void Samples(File datei)
eben KEIN Konstruktor sondern dank dem 'void' eine Methode mit Konstruktorname ist.
@Gast Änder das unbedingt!
 
G

Gast

Gast
wenn ich das void wegnehme, meckert er beim methodenaufruf von sample() in der gui klasse.

ja aber wie krieg ich das ding denn zum laufen leute? keiner ne idee oder sowas?
 
G

Gast

Gast
ja aber dann bin ich immer noch da wo ich seit tagen bin, ich kann nur dateien einlesen wenn sie im code angegeben ist.....
 
G

Gast

Gast
so void ist draussen .. jetzt meckert in der gui klasse beim aufruf..

funk1.Samples(f1.getSelectedFile());

ist rot unterstrichen mit wellenlinie und er meint method samples(file) is undefined for the type samples.

compiler meckert auch....

xception in thread "main" java.lang.Error: Unresolved compilation problem:
The method Samples(File) is undefined for the type Samples

at Gui_swing.<init>(Gui_swing.java:66)
at Caller.main(Caller.java:9)
 
G

Guest

Gast
ok und wie kann ich das lösen? ne extra methode mit diesem namen machen?
 

Wildcard

Top Contributor
Mit diesem Namen in keinem Fall! Das ist ein Konstruktorname. Wenn der Code nur einmal ausgeführt werden soll kann er im Konstruktor bleiben, ansonsten in eine andere Methode kopieren.
 
G

Gast

Gast
ach so ne s........ ich check langsam gar nix mehr. habs umbenannt und es geht immer noch nicht ... ;-(
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G dringende frage zu klassen und methoden ( klassendiagramm) Java Basics - Anfänger-Themen 19
N Laufzeitberechnung - dringende Hilfe! Java Basics - Anfänger-Themen 1
B BITTE!! Ich brauche dringende Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 17
T Datentypen brauche dringende hilfe!dezi in Asci umwandeln! Java Basics - Anfänger-Themen 4
A Dringende Bitte um Erklärungen zum besseren Verständnis Java Basics - Anfänger-Themen 4
N Brauche dringende Hilfe Java Aplett läuft nicht! Java Basics - Anfänger-Themen 3
C eine dringende bitte an alle java-programmierer Java Basics - Anfänger-Themen 4
Zrebna Frage zu Test-Driven Development (TDD) Java Basics - Anfänger-Themen 3
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
I Frage Thymeleaf -> Prefix / Suffix ändern? Java Basics - Anfänger-Themen 11
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4
T Frage zu Parse Java Basics - Anfänger-Themen 2
H Frage an die Profis Java Basics - Anfänger-Themen 4
J Eine konzeptionelle Frage zu OOP Java Basics - Anfänger-Themen 3
P Frage zu Rekursion und Backtracking Java Basics - Anfänger-Themen 2
H Frage zur Ausgabe Java Basics - Anfänger-Themen 4
H Frage zu arithmetischen Operationen Java Basics - Anfänger-Themen 20
F Kurze Frage zu replace() Java Basics - Anfänger-Themen 19
JavaSchmecktLecker Polymorphie Frage zur Methodenüberschreibung Java Basics - Anfänger-Themen 21
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
B Erste Schritte Frage zu Instanzierung und Referenzen Java Basics - Anfänger-Themen 8
DoubleM Runtime.getRuntime().exec Frage Java Basics - Anfänger-Themen 2
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
O Frage: Formaler Typbezeichner? Java Basics - Anfänger-Themen 3
I BlueJ Queue Frage für Klausur Java Basics - Anfänger-Themen 2
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
N Spezielle frage zum Comparator Java Basics - Anfänger-Themen 6
L Frage zum Array Java Basics - Anfänger-Themen 1
A Frage zum UML Design Java Basics - Anfänger-Themen 1
I Hilfe bei Klausur Frage Java Basics - Anfänger-Themen 8
izoards Drucken Frage zu FAQ Beitrag Java Basics - Anfänger-Themen 2
J Frage zu meinem Code (OOP) Java Basics - Anfänger-Themen 4
sserio Split() -> Regex Frage. Java Basics - Anfänger-Themen 7
A OCA Study Guide: 2. Frage aus Kapitel 3 Java Basics - Anfänger-Themen 9
sserio Date Library Frage Java Basics - Anfänger-Themen 9
Max246Sch Frage zu Währungsrechner Code Java Basics - Anfänger-Themen 2
sserio Frage zu HashMaps Java Basics - Anfänger-Themen 20
sserio Frage zu Threading - Multithreading Java Basics - Anfänger-Themen 2
sserio Frage zu Lambda Ausdrücken Java Basics - Anfänger-Themen 7
sserio Frage zu BigInteger Java Basics - Anfänger-Themen 1
D Frage bzgl. Enum-Handhabung Java Basics - Anfänger-Themen 16
xxx12 Frage Java Basics - Anfänger-Themen 2
I Generelle Frage zu Mikroservices (Spring Boot?), Docker... Java Basics - Anfänger-Themen 7
R Frage zu Methoden (Rückgabewert u. ohne.) Java Basics - Anfänger-Themen 2
A Frage zur programmierung Java Basics - Anfänger-Themen 12
M Frage zur Methode split der Klasse String Java Basics - Anfänger-Themen 32
R Input/Output Frage zu Java IO Java Basics - Anfänger-Themen 6
M Frage zu printWriter Java Basics - Anfänger-Themen 5
C Frage zu OLSMultipleLinearRegression Java Basics - Anfänger-Themen 31
KogoroMori21 Frage zum Euklidischen Algorithmus Java Basics - Anfänger-Themen 11
S Verständnis-Frage zu einer HÜ? Java Basics - Anfänger-Themen 1
F Frage betreff Programm mit dem man C++-Code in JAVA-Code übersetzen lassen kann Java Basics - Anfänger-Themen 2
L Frage zur Ticket Maschine Java Basics - Anfänger-Themen 1
J Frage zu OOP-Klassendiagramm Java Basics - Anfänger-Themen 8
OSchriever Frage zu Compiler Java Basics - Anfänger-Themen 8
H Frage zu Throw Exception Java Basics - Anfänger-Themen 2
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
Bademeister007 Hallo Leute ich hab eine Frage zur ArrayList Java Basics - Anfänger-Themen 8
F Frage betreff Programmierbücher zu Lagerverwaltung als Konsolenprogramm Java Basics - Anfänger-Themen 3
dieter000 Kurze Frage kann mir ejmand kurz diesen Code erklären, bzw wie man die zeilen erklärt und so Java Basics - Anfänger-Themen 1
I String.split regex Frage Java Basics - Anfänger-Themen 2
N Best Practice Frage zum MVC-Pattern Java Basics - Anfänger-Themen 2
dieter000 Frage zu einem Beispiel... Java Basics - Anfänger-Themen 5
J Frage zum Loggen Java Basics - Anfänger-Themen 18
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
Zrebna Frage zum "Referenzen-konzept" in Java Java Basics - Anfänger-Themen 8
JD_1998 Array-Position aus einer Methode in einer anderen ausgeben (Kurze Frage) Java Basics - Anfänger-Themen 2
marcooooo Frage zu bestimmten Beispiel Java Basics - Anfänger-Themen 31
NeoLexx equals()-Methode Verständnis Frage anhand Code Beispiel Java Basics - Anfänger-Themen 22
N Input/Output Eine Frage über system.out.println. Java Basics - Anfänger-Themen 10
B Erste Schritte Learning Coding (!) Frage an erfahrene Programmierer. Java Basics - Anfänger-Themen 23
M konzeptuelle Frage: In welcher Klasse definiert man am Besten Methoden, die die Kommunikation mit dem User regeln? Java Basics - Anfänger-Themen 8
B Frage zum Code verständnis im Resultat Java Basics - Anfänger-Themen 10
C Exception-Frage Java Basics - Anfänger-Themen 3
J Eine Frage zur Schreibweise == ? : Java Basics - Anfänger-Themen 3
S Frage des Designs Java Basics - Anfänger-Themen 1
JavaTalksToMe Extends/Implements Frage Java Basics - Anfänger-Themen 3
pkm Frage zu Servletfunktion Java Basics - Anfänger-Themen 0
B Frage zur Währungsumrechnung Java Basics - Anfänger-Themen 3
S Allgemeine Frage über Generics und Vererbungen Java Basics - Anfänger-Themen 5
Kirby.exe Frage zur Verwendung von Interfaces Java Basics - Anfänger-Themen 6
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
L Wie frage ich ab, ob in einem Array, Werte doppelt vorkommen? Java Basics - Anfänger-Themen 4
D Frage zur IDE IntelliJ IDEA Java Basics - Anfänger-Themen 6
H Frage zum 2d Array Java Basics - Anfänger-Themen 1
N Frage zum Newton-Fraktal Java Basics - Anfänger-Themen 1
H Frage zu interfaces Java Basics - Anfänger-Themen 1
J Frage dazu Variablen klassenübergreifend zu verändern Java Basics - Anfänger-Themen 22
I Frage zu SkipList Java Basics - Anfänger-Themen 4
G Frage zu JScrollPane Java Basics - Anfänger-Themen 12
Kirby.exe Allgemeine Frage Java Basics - Anfänger-Themen 3
W Frage zu anonymen Klassen Java Basics - Anfänger-Themen 4
J Kleine Frage zu OOP Java Basics - Anfänger-Themen 371
S Frage Klasse und Objekte Java Basics - Anfänger-Themen 2
F Frage zu Iteratoren Java Basics - Anfänger-Themen 2
C Erste Schritte Frage zur ArrayList Java Basics - Anfänger-Themen 15
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
H Frage zur ermittlung eines doppelte Paars aus Sotieralgorithmus Java Basics - Anfänger-Themen 4
H Frage zum Array Java Basics - Anfänger-Themen 17
G Schach -Frage 2- Maussteuerung Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben