Datei mit Java-Application öffenen

  • Themenstarter Themenstarter nightmare
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
N

nightmare

Gast
Hi,
ich bin dabei einen kleinen Texteditor zu programmieren. Wenn ich eine .txt Datei öffnen möchte mache ich dies mit hilfe eines JFileChooser und lese die Datei ein. Ich möchte aber auch, dass wenn ich im Explorer auf eine .txt Detei klicke sie automatisch mit meinem Texteditor geöffnet und angezeigt wird, wie z.B. bei MS Word.
Ist dass möglich und wenn ja wie?

mfg Alex
 
Das hat nichts mit Java zum tun!!

Ich vermisse die guten alten zeiten, wo man den "Kindern" noch grundlegende Sachen zum OS beigebracht hat...


Entweder registry: HKEY_CLASSES_ROOT\.txt

Oder aber in Explorer->Extras->Ordneroptionen->Dateitypen
txt raussuchen und dort musst du eintragen

java -jar deintexteditor.jar %1

schwups gehts!!

Unter Linux kommts halt drauf an welche grafische Oberfläche du nutzt.. Habe aber keine Ahnung wo das abgespeichert wird (von Mac OS weiß ich sowieso nüschts!)
 
Naja das hat schon was mit Java zu tun... man will ja nicht dem DAU, der da das Programm bedient sagen "Gehen Sie jetzt in die Registry und verändern Sie blupp. Oder falls Sie Linux mit KDE haben machen Sie bla...".
Und in Java kann man ja erstmal nur mit JNI in die Registry schreiben, und wenn dann noch an die anderen Plattformen gedacht werden soll, hofft man eben, dass es dafür Methoden oder APIs gibt.
Und so eine gibt es hier: https://jdic.dev.java.net/
 
so gehts mit der jdic-lib (https://jdic.dev.java.net/):

Code:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.OutputStream;

import javax.swing.JOptionPane;

import org.jdesktop.jdic.filetypes.Association;
import org.jdesktop.jdic.filetypes.AssociationService;

public class DateiAssoziation {
  public static void txt(String[] args) {

    AssociationService as = new AssociationService();
         if (as.getFileExtensionAssociation ("txt") != null){ //schon registriert
       

             }else if (as.getFileExtensionAssociation ("txt") == null){
                try {
                   File startbat = new File ("editor/Editor.bat"); //Batchdatei
                   BufferedWriter bw = new BufferedWriter (new FileWriter (startbat));
                   File chosen = new File (System.getProperty("user.dir"));
                   bw.write("@echo off"); //Datei schreiben
                   bw.newLine();
                   bw.write(chosen.getAbsolutePath().substring(0, 2));
                   bw.newLine();
                   bw.write("cd " + chosen.getAbsolutePath());
                   bw.newLine();
                   String javahome = System.getProperty("java.home", "");
                   String filesep = File.separator;
                   bw.write ("START " + javahome + filesep + "bin" + filesep + "javaw.exe -jar Editor.jar " + ((args.length != 0 && args[0].equals("-debug")) ? "-debug" : "") + "%1");
                   bw.close(); //Batchdatei fertig
                   
                   Association txt = new Association ();
                   txt.addFileExtension ("txt");
                   org.jdesktop.jdic.filetypes.Action txtAction = new org.jdesktop.jdic.filetypes.Action ("open", startbat.getAbsolutePath() + " \"%1\"", "Open Editor"); //eintrag zur Batchdatei
                   txt.addAction (txtAction);
                   InputStream is = ClassLoader.getSystemResourceAsStream("images/icon.ico"); //icon entpacken
                   OutputStream os = new FileOutputStream ("editor/txt.ico"); //falls man icon zuweisen will
                   byte[] buf = new byte[512];
                   int len;
                   while ((len = is.read(buf)) >= 0){
                      os.write(buf, 0, len);
                      }
                   is.close();
                   os.close(); //icon entpackt
                   txt.setIconFileName (new File ("editor/txt.ico").getAbsolutePath()); //icon setzen
                   as.registerSystemAssociation (txt); //fertigstellen
                }catch (Exception ex) {
                   JOptionPane.showMessageDialog(null, ex);
                   ex.printStackTrace();
                }
             }
         }
      
  }

wenn du das noch an einem funktionierendem programm sehen willst:
http://www.java-forum.org/de/viewtopic.php?t=24507
 
@Illu: das hat dann was mit Installation zum tun!

Explizit hat das mal überhaupt nichst aber gar nichts mit Java zum tun, da das einfach vom OS ist und man kann eigentlich alles einstellen!

Punkt um!
 
@Bastian: Cool, mein Code 😀

@thE: Naja, man kann es so und so sehen. Es hat was mit der Installation zu tun, da hab ich ja auch nix anderes gesagt 😉 aber wenn diese Installation in Java sein soll, oder wenn es nur um einen Menüpunkt "Verknüpfe .txt Dateien mit BlupEditor" geht, dann hat es imho eben doch was mit Java zu tun. Klar, die eigentliche Dateiverknüpfung hat nix mit Java zu tun, aber diese einzurichten, schon...

@nightmare: Hat das soweit geholfen?
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben