前提・実現したいこと
JavaプログラムとJavaFXで作成したGUIを繋げたい
現在、指定したフォルダ下の複数ファイルを圧縮するプログラムを作成しています。
プログラム自体はeclipseを用いてJavaで書いたのですが、他の人が簡単にプログラムを動かせるように、圧縮元のファイルアドレスや圧縮先のフォルダアドレスなどを入力出来るGUIでプログラムを動かしたいと考えています。
GUIはeclipseからJavaFXプログラムを作成→scene builderを起動して作成しました。
その後、JavaFXとJavaを連動させて(JavaFXのTextFiledで読み込んだ値をJavaに引き渡すなど)プログラムをGUIで動かそうと思ったのですが、調べてみたところJavaとJavaFXは完全に独立していた言語で、変数の参照などは出来ないように読み取れたんですが実際にそうなんでしょうか?
また、その場合Javaプログラムの中身自体をJavaFXで書き直す必要があると思うのですが、TextFiledで読み込んだ値を変数に納めてプログラム内で計算に使うにはどのようにすればいいのか、サイトを探してもまだ見つけられていないので参考になるようなサイトがあれば教えて頂きたいです。
よろしくお願い致します。
Java
1import java.io.File; 2import java.io.IOException; 3import java.nio.file.Files; 4import java.nio.file.Path; 5import java.nio.file.Paths; 6import java.text.SimpleDateFormat; 7import java.util.Calendar; 8import java.util.Scanner; 9 10public class a { 11 public static void main(String[] args) { 12 13 try { //最後にfinally節でclose処理したい(出来ない) 14 15 //////////保存先のディレクトリの作成 16 // Windows Vista 以降での仕様(UAC)でシステムルートドライブ(C:\)には書き込めない(管理者権限の昇格が必要)のでとりあえずD:に作成 17 //"D:\test"にするとファイル名が\testになる 18 19 System.out.println("新しく作成するディレクトリのアドレスを入力してください。"); 20 21 //Scannerで入力を受け付け 22 23 Scanner scan1 = new Scanner(System.in); 24 25 //nextメソッドで入力された文字の読み取り 26 //nextは文字を文字列として読み込み、nextIntは数値として読み込み 27 String str1 = scan1.next(); 28 29 System.out.println("入力されたアドレス:" + str1 + ""); 30 //scan1.close(); 31 32 //Fileクラスのオブジェクトを生成 33 File newdir = new File(str1); 34 35 if(newdir.exists()) { 36 System.out.println("既に存在しているディレクトリです"); 37 }else if (newdir.mkdir()){ 38 System.out.println("ディレクトリの作成に成功しました"); 39 }else{ 40 System.out.println("ディレクトリの作成に失敗しました"); 41 } 42 43 44 //File newdir = new File("D:\test\sub"); 45 46 //if (newdir.mkdir()){ 47 //System.out.println("ディレクトリの作成に成功しました"); 48 //}else{ 49 //System.out.println("ディレクトリの作成に失敗しました"); 50 //} 51 52 53 /////////ファイルのコピー 54 System.out.println("ログファイルのあるアドレスを入力してください"); 55 //Fileクラスのオブジェクトを作成 56 Scanner scan2 = new Scanner(System.in); 57 String str2 = scan2.next(); 58 System.out.println("入力されたアドレス:" + str2 + ""); 59 60 61 File dir = new File(str2); 62 //listFiles:指定したディレクトリに含まれるファイルやディレクトリを配列で返す 63 File[] list = dir.listFiles(); 64 65 //nullチェック 66 //listfilesは指定したパス名がディレクトリを示さない場合や入出力エラーが発生した場合にnullを返す 67 //null状態のままオブジェクト配列を参照するとjava.lang.NullPointerExceptionの例外が発生 68 if(list != null) { 69 //読み込んだファイルやディレクトリの数を表示 70 System.out.println("OK"); 71 } else { 72 System.out.println("null"); 73 } 74 75 //最終更新日時表示書式 76 //SimpleDateFormat(String)で指定されたパターン、デフォルトのロケール、日付フォーマット記号を持つ、オブジェクトを生成 77 SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 78 79 //CalendarクラスやDateクラスは月を0~11で表すため一カ月ずれる!! 80 //日時の設定 81 Calendar start = Calendar.getInstance(); 82 System.out.println("取得したいログの開始時間を入力してください(年、月、日、時間、分、秒)"); 83 int scanstart[] = new int[6]; 84 Scanner scst = new Scanner(System.in); 85 for(int i = 0; i < scanstart.length; i++) { 86 scanstart[i] = scst.nextInt(); 87 } 88 //scst.close(); 89 90 //start.set(2019, 4, 8, 6, 00, 00); 91 start.set(scanstart[0],scanstart[1],scanstart[2],scanstart[3],scanstart[4],scanstart[5]); 92 93 //日時の設定 94 Calendar end = Calendar.getInstance(); 95 System.out.println("取得したいログの終了時間を入力してください(年、月、日、時間、分、秒)"); 96 int scanend[] = new int[6]; 97 Scanner scend = new Scanner(System.in); 98 for(int i = 0; i < scanend.length; i++) { 99 scanend[i] = scend.nextInt(); 100 } 101 //sced.close(); 102 103 //end.set(2019, 4, 8, 12, 00, 00); 104 end.set(scanend[0],scanend[1],scanend[2],scanend[3],scanend[4],scanend[5]); 105 106 for (int i=0; i<list.length; i++) { 107 108 // ファイルの最終更新日時(タイムスタンプ)を取得 109 // 1970年1月1日0時0分0秒からの経過ミリ秒 110 long lastModified = list[i].lastModified(); 111 112 //最終更新日時書式整形 113 //String lastModifiedStr = sdf.format(lastModified); 114 115 System.out.println(list[i]); 116 //System.out.println(lastModifiedStr); 117 118 //ファイルのコピー 119 Path sourcePath = Paths.get(list[i].getPath()); 120 Path destinationPath = Paths.get(str1 + "\" + list[i].getName() + ".txt"); 121 122 //あsファイルの更新日時をlong型からCalendar型に変換 123 Calendar source = Calendar.getInstance(); 124 //setTimeInMillis:Calendar の現在時刻を、指定された long 値から設定 125 source.setTimeInMillis(lastModified); 126 127 128 129 //cal1.compareTo(cal2) 130 //同じなら0、cal1過去・cal2(引数)が未来なら負数1、cal1が未来なら正数を返す 131 int diff1 = source.compareTo(start); 132 int diff2 = source.compareTo(end); 133 134 if(diff1 > 0 && diff2 < 0) { 135 //ファイルのコピー 136 try { 137 Files.copy(sourcePath,destinationPath); 138 } catch (IOException e) { 139 e.printStackTrace(); 140 } 141 } 142 143 //c_zip.zip( 144 //"D:\test\subzip.zip", "sourcePath"); 145 146 147 } 148 //Zip化:ファイルの更新日時がプログラムの更新日時を上書きしてる 149 ZipCompressUtils.compressDirectory("D:\test\subzip.zip", str1); 150 151 152 153 } finally { 154 //scend.close(); 155 } 156 } 157 158} 159
回答1件
あなたの回答
tips
プレビュー