日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

JavaFX FileChooser文件选择器,缓存上一次打开的目录

發(fā)布時(shí)間:2025/3/18 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaFX FileChooser文件选择器,缓存上一次打开的目录 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

例1:點(diǎn)擊按鈕Choose File打開(kāi)文件選擇器,并打開(kāi)指定的目錄。這是通過(guò)final void setInitialDirectory(final File value)方法實(shí)現(xiàn)的。

1 import java.io.File; 2 3 import javafx.application.Application; 4 import javafx.event.ActionEvent; 5 import javafx.event.EventHandler; 6 import javafx.geometry.Insets; 7 import javafx.geometry.Pos; 8 import javafx.scene.Scene; 9 import javafx.scene.control.Button; 10 import javafx.scene.layout.GridPane; 11 import javafx.stage.FileChooser; 12 import javafx.stage.FileChooser.ExtensionFilter; 13 import javafx.stage.Stage; 14 15 public class Main extends Application { 16 17 public static void main(String[] args) { 18 launch(args); 19 } 20 21 @Override 22 public void start(Stage primaryStage) throws Exception { 23 // Create a pane to hold a button 24 GridPane pane = new GridPane(); 25 pane.setStyle("-fx-border-color: green;"); 26 pane.setAlignment(Pos.CENTER); 27 pane.setPadding(new Insets(10, 10, 10, 10)); 28 pane.setHgap(10); 29 pane.setVgap(10); 30 31 // Create a button to choose a file 32 Button btChooseFile = new Button("Choose File"); 33 pane.add(btChooseFile, 0, 0); 34 35 // Set the primary stage properties 36 primaryStage.setScene(new Scene(pane, 400, 200)); 37 primaryStage.setTitle("Starting..."); 38 primaryStage.setResizable(false); 39 primaryStage.show(); 40 41 // 42 btChooseFile.setOnAction(new EventHandler<ActionEvent>() { 43 @Override 44 public void handle(ActionEvent event) { 45 FileChooser fileChooser = new FileChooser(); 46 fileChooser.setTitle("Choose File"); 47 fileChooser.setInitialDirectory(new File("J:" + File.separator + "PrtSc" + File.separator + "20190321")); 48 fileChooser.getExtensionFilters().addAll(new ExtensionFilter("Text Files", "*.txt"), new ExtensionFilter("All Files", "*.*")); 49 File file = fileChooser.showOpenDialog(primaryStage); 50 if (file != null) { 51 System.out.println(file.getAbsolutePath()); 52 } 53 } 54 }); 55 } 56 }

UI:

?

?

例2:增加一個(gè)緩存文件,用于記錄上一次選中的目錄。

工程結(jié)構(gòu):

第62行的代碼,涉及到的知識(shí)點(diǎn):Java - byte[] 和 String互相轉(zhuǎn)換,

1 import java.io.File; 2 import java.io.FileInputStream; 3 import java.io.FileNotFoundException; 4 import java.io.FileOutputStream; 5 import java.io.IOException; 6 import java.io.InputStream; 7 import java.io.OutputStream; 8 9 import javafx.application.Application; 10 import javafx.event.ActionEvent; 11 import javafx.event.EventHandler; 12 import javafx.geometry.Insets; 13 import javafx.geometry.Pos; 14 import javafx.scene.Scene; 15 import javafx.scene.control.Button; 16 import javafx.scene.layout.GridPane; 17 import javafx.stage.FileChooser; 18 import javafx.stage.FileChooser.ExtensionFilter; 19 import javafx.stage.Stage; 20 21 public class Main extends Application { 22 23 public static void main(String[] args) { 24 launch(args); 25 } 26 27 @Override 28 public void start(Stage primaryStage) throws Exception { 29 // Create a pane to hold a button 30 GridPane pane = new GridPane(); 31 pane.setStyle("-fx-border-color: green;"); 32 pane.setAlignment(Pos.CENTER); 33 pane.setPadding(new Insets(10, 10, 10, 10)); 34 pane.setHgap(10); 35 pane.setVgap(10); 36 37 // Create a button to choose a file 38 Button btChooseFile = new Button("Choose File"); 39 pane.add(btChooseFile, 0, 0); 40 41 // Set the primary stage properties 42 primaryStage.setScene(new Scene(pane, 400, 200)); 43 primaryStage.setTitle("Starting..."); 44 primaryStage.setResizable(false); 45 primaryStage.show(); 46 47 // 48 btChooseFile.setOnAction(new EventHandler<ActionEvent>() { 49 @Override 50 public void handle(ActionEvent event) { 51 FileChooser fileChooser = new FileChooser(); 52 fileChooser.setTitle("Choose File"); 53 fileChooser.getExtensionFilters().addAll(new ExtensionFilter("All Files", "*.*")); 54 // 55 File cacheFile = new File("cache.txt"); 56 if (cacheFile.exists()) { 57 try (InputStream inputStream = new FileInputStream(cacheFile)) { 58 byte[] bytes = new byte[(int) cacheFile.length()]; 59 // Read the contents of the cache.txt 60 inputStream.read(bytes); 61 // 62 File directory = new File(new String(bytes)); 63 if (directory.exists()) { 64 fileChooser.setInitialDirectory(directory); 65 } 66 } catch (FileNotFoundException e) { 67 e.printStackTrace(); 68 } catch (IOException e1) { 69 e1.printStackTrace(); 70 } 71 } 72 // 73 File file = fileChooser.showOpenDialog(primaryStage); 74 if (file != null) { 75 // Store the directory to the cache.txt 76 try (OutputStream outputStream = new FileOutputStream(cacheFile)) { 77 byte[] bytes = file.getParent().getBytes(); 78 outputStream.write(bytes); 79 } catch (FileNotFoundException e) { 80 e.printStackTrace(); 81 } catch (IOException e) { 82 e.printStackTrace(); 83 } 84 } 85 } 86 }); 87 } 88 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/Satu/p/10847649.html

總結(jié)

以上是生活随笔為你收集整理的JavaFX FileChooser文件选择器,缓存上一次打开的目录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。