showOpenDialog(Stage stage) <- Para abrir archivos showSaveDialog(Stage stage) <- Para guardar archivos
Ambos tienen un atributo "stage" que es la ventana actual de la cual fueron llamados.
La lectura y escritura de archivos sigue siendo con las clases del paquete io de java. En el siguiente código esta una clase funcional que les permite abrir/guardar y leer/escribir archivos.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.*; | |
import javafx.application.Application; | |
import javafx.event.ActionEvent; | |
import javafx.event.EventHandler; | |
import javafx.scene.Group; | |
import javafx.scene.Scene; | |
import javafx.scene.control.Button; | |
import javafx.scene.control.TextArea; | |
import javafx.scene.layout.BorderPane; | |
import javafx.scene.layout.HBox; | |
import javafx.scene.paint.Color; | |
import javafx.stage.FileChooser; | |
import javafx.stage.Stage; | |
public class FileExample extends Application implements | |
EventHandler<ActionEvent> { | |
private TextArea textArea; | |
private Stage stage; | |
private Button openButton; | |
private Button saveButton; | |
public static void main(String[] args) { | |
launch(args); | |
} | |
@Override | |
public void start(Stage primaryStage) { | |
stage = primaryStage; | |
stage.setTitle("Ejemplo de Archivos"); | |
textArea = new TextArea(); | |
openButton = new Button("Abrir"); | |
openButton.setOnAction(this); | |
openButton.setTranslateX(80.0); | |
saveButton = new Button("Guardar"); | |
saveButton.setOnAction(this); | |
HBox top = new HBox(150); | |
top.getChildren().addAll(openButton, saveButton); | |
Group root = new Group(); | |
Scene scene = new Scene(root, 465, 280, Color.WHITE); | |
BorderPane border = new BorderPane(); | |
border.setCenter(textArea); | |
border.setTop(top); | |
root.getChildren().add(border); | |
primaryStage.setScene(scene); | |
primaryStage.show(); | |
} | |
@Override | |
public void handle(ActionEvent event) { | |
Button b = (Button) event.getSource(); | |
if (b.getText().equals("Abrir")) { | |
FileChooser fileChooser = new FileChooser(); | |
File file = fileChooser.showOpenDialog(stage); | |
if(file!=null){ | |
FileReader fr = null; | |
BufferedReader br = null; | |
String texto = ""; | |
try { | |
fr = new FileReader(file); | |
br = new BufferedReader(fr); | |
String st = br.readLine(); | |
while (st != null) { | |
texto = texto + st + "\n"; | |
st = br.readLine(); | |
} | |
} catch (Exception e) { | |
textArea.appendText(e.toString()); | |
} finally { | |
try { | |
fr.close(); | |
} catch (Exception e2) { | |
textArea.appendText(e2.toString()); | |
} | |
} | |
textArea.appendText(texto); | |
} | |
} else if (b.getText().equals("Guardar")) { | |
FileChooser fileChooser = new FileChooser(); | |
File file = fileChooser.showSaveDialog(stage); | |
if(file!=null){ | |
FileWriter fw = null; | |
BufferedWriter bw = null; | |
try { | |
// EL segundo parametro es un boolean | |
// En true escribe al final | |
// En false escribe al inicio | |
fw = new FileWriter(file, false); | |
bw = new BufferedWriter(fw); | |
String texto = textArea.getText(); | |
bw.write(texto, 0, texto.length()); | |
} catch (Exception e) { | |
textArea.appendText(e.toString()); | |
} finally { | |
try { | |
bw.close(); | |
} catch (Exception e2) { | |
textArea.appendText(e2.toString()); | |
} | |
} | |
} | |
} | |
} | |
} |
Excelente...
ResponderEliminarGracias.
me dice que: Error: no se ha encontrado o cargado la clase principal FileExample
ResponderEliminarJava Result: 1
Puede ser que no este bien declarado el paquete donde creaste la clase. Simplemente verifica que al inicio del archivo donde dice "package " sea el mismo que el paquete donde agregaste la clase.
EliminarAmigo tiene muy bajo rendimiento, se tardo 6 segundos en abrir un archivo.sql de 6516 lineas de codigo. Buen intento amigo pero para los avanzados en Java esto no sirve.
ResponderEliminarLos avanzados de Java se leen la api no se ponen a investigar e.e
EliminarLa neta, jajajajajaja
Eliminar