Gå til innhold

Runtime. Åpne filer i notepad


Anbefalte innlegg

Heisann!

 

Jeg tenke jeg skulle prøve å åpne .txt filer fra min java applikasjon som jeg skrev.

 

Fant frem til at man kan bruke en Runtime sak til å kjøre CL kode.

 

try
		{
			Runtime.getRuntime().exec("notepad C:\\test.txt");
		} catch (IOException ex)
		{
			ex.printStackTrace();
		}

 

Men jeg trenger en måte å åpne en fil fra "relative path" på, slik at jeg trenger ikke å ha fila nøyaktig i den og den mappa. Er det noe mulighet for dette? Er det en annen måte å gjøre det på enn å bruke Runtime?

Lenke til kommentar
Videoannonse
Annonse

Du kan jo først bruke den innebygde java file chooser for å velge en fil, lagre tekstrengen og så bruke strengen i kallet dersom det er det du er ute etter.

 

Følgdene kodeeksempel åpner en dialogboks der du kan velge fil. Deretter skrives stien ut på consollen. Mulig du kan bruke noe av det:

 

package windowtest;

import java.awt.Component;
import java.io.File;

import javax.swing.*;

public class windowtest {

public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException {
JFrame.setDefaultLookAndFeelDecorated(true);
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
JFrame frame = new JFrame("frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JFileChooser valg = new JFileChooser();
Component arg0 = null;
int returnval = valg.showOpenDialog(arg0);
if(returnval == JFileChooser.APPROVE_OPTION){
	File file = valg.getSelectedFile();
	System.out.println(file.getPath());
}


}


}

Lenke til kommentar

Hvis du ikke vil bruke GUI så kan du jo lage programmet slik at brukeren må sende argumenter til programmet når det startes:

 

public static void main(String[] args) {
  String filnavn = args[0];
}

 

Eller du kan bruke Scanner-klassen til å lese inn "path" fra tastaturet.

Endret av kjey
Lenke til kommentar

jeg har en JMenu saker som har items i seg, som er igjen koblet til en lytter. Lyttern ordner en JFileChooser for å importere innhold fra en tekstfil (med en fin toString som legger innholdet fint i min JList).

 

Men altså, jeg skal ha en hjelpefil åpnet når jeg trykker på f.eks "Help". Da skal nemlig en tekstfil åpnes (hjelpefil). Jeg kan sikkert pløffe alt inn i en JOptionPane, men den har sine begrensninger, det er stygt som juling, og er heller ikke noe funksjonelt :p

Lenke til kommentar
Jeg ville anbefalt deg å bruke noe innebygget fremfor Notepad, men du er mest interessert i å åpne en fil uten å måtte bruke absolutt sti?

 

Et spørsmål som må stilles: Har du prøvd?

 

Kjøres programmet i en jar-fil?

 

jeg har prøvd ja.

 

Runtime.getRuntime().exec("notepad C:\\test.txt"); <--- fungerer om test.txt er på C rota.

 

Runtime.getRuntime().exec("notepad C:\test.txt"); <--- gir meg "Finner ikke fil C: est.txt. Vil du opprette en ny fil?"

 

jeg ser etter noe slik som

Runtime.getRuntime().exec("notepad test.txt"); <-- som f.eks åpner en fil "test.txt" hvor enn nå den er. (Den linja her forresten gir meg "finner ikke fil bla bla. Vil du opprette ny en?"

 

edit: ja, jeg er mest interessert i å åpne en fil uten å måtte bruke absolutt sti. Du sa noe om noe innebygd? Hva er i så fall det? Kanskje jeg går med på det uansett :p

 

Hele poenget mitt er når jeg trykker på "Help" skal det dukke opp en "readme". Hvordan jeg gjør det er jeg flexibel på. Jeg prøvde Runtime saken, jeg kan sikkert prøve noe annet også. Noen forslag?

Endret av MrLeftfield
Lenke til kommentar
Skal help fila ligge i samme folder som programmet, altså at du vil ha en relativ streng i forhold til hvor java programmet kjøres fra ?

 

yupp.

 

La oss si at progget ligger i C:\Program files\program\prog.exe

Men jeg vil f.eks ha help fila i C:\Program Files\program\help&manual\readme.txt

 

edit: path'en vil forandres dog, siden den skal jeg hente fra input i installasjonsprogrammet (Path som brukr velger under install).

Endret av MrLeftfield
Lenke til kommentar

Ah da bør dette fungere:

 

File helpfil = new File("help.txt"); //Her legger du in relativ bane
String path = helpfil.getAbsolutePath();
Runtime.getRuntime().exec("notepad " +path);

 

Merk dette forutsetter at filen help.txt eksiterer, det lages ikke noe ny fil.

Endret av Thorsen
Lenke til kommentar
Ah da bør dette fungere:

 

File helpfil = new File("help.txt"); //Her legger du in relativ bane
String path = helpfil.getAbsolutePath();
Runtime.getRuntime().exec("notepad " +path);

 

Merk dette forutsetter at filen help.txt eksiterer, det lages ikke noe ny fil.

 

Selvfølgelig. Tusen takk! :D Den tankegangen slo meg ikke :p

Lenke til kommentar
Ah da bør dette fungere:

 

File helpfil = new File("help.txt"); //Her legger du in relativ bane
String path = helpfil.getAbsolutePath();
Runtime.getRuntime().exec("notepad " +path);

 

Merk dette forutsetter at filen help.txt eksiterer, det lages ikke noe ny fil.

 

Selvfølgelig. Tusen takk! :D Den tankegangen slo meg ikke :p

 

new File("help.txt") ? Atskillig greiere med new File(".").

Lenke til kommentar
new File("help.txt") ? Atskillig greiere med new File(".").

 

Da må du jo legge til resten av banen senere før du kjører notpad. Men hva som er greiest skal jeg ikke legge meg oppi.

 

Den eksterne prosessen/programmet som kjøres trenger jo hele stien til filen som skal åpnes i seg uansett. new File(".") gjør jo at vi får strengen %currentdir%\. ikke akkurat mye nyttig.

Lenke til kommentar

 

\\t

 

altså enda en \ foran betyr skip at \t betyr tab men betrakt som vanlig tekst. Så lenge programmet ikke skal kjøres på andre systemer enn windows er det ikke nødvendig å bruke javas ferdige systemuavhengige pathsepeator. Men det kan jo være greit å bruke for skikkelig systemuavhengighet.

Lenke til kommentar
new File("help.txt") ? Atskillig greiere med new File(".").

 

Da må du jo legge til resten av banen senere før du kjører notpad. Men hva som er greiest skal jeg ikke legge meg oppi.

 

Den eksterne prosessen/programmet som kjøres trenger jo hele stien til filen som skal åpnes i seg uansett. new File(".") gjør jo at vi får strengen %currentdir%\. ikke akkurat mye nyttig.

 

*gjesp* Whops, trodde poenget var å finne greiest måte å få tak i absolute path til banen vi var i.

Endret av jurg
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...