質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

解決済

1回答

1684閲覧

【Go】ファイルを選択する際パスを直接指定するのではなく、ユーザーに選んでもらってそのファイルを読み込む方法

nyako

総合スコア45

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

0クリップ

投稿2022/07/25 06:00

やりたいこと

とある設定ファイルをプログラム内で読み込みたいと思っています。osパッケージ等で既に決まっている
ディレクトリでファイルを読み込むことは出来ると思うのですが、都度ユーザーによって保存してある場所がデスクトップだったり異なるので、Goでいうとfmt.Scan()でユーザーが入力するのを待機するように。ユーザー側に選択してもらってそのファイルを読み込みたいです。

調べてもあまり出てこなく、結構こう言った場面はあると思うのでどのように実装するかのヒントを頂きたいです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

  • CLIによる慣習
  • GUIによる慣習

以上の2種類があります。

質問によるとGUIでというようには見えないので「CLIによる慣習」を解説します。

CLIで入力ファイルを指定するのはコマンドライン引数で指定するという慣習を使うのが一般的です。
この慣習に則っておくと、デスクトップ上のドラッグ&ドロップ操作が入力ファイルを指定した状態でプログラムを起動するといったことができるようになります。

例えば「sample.exe」というプログラムがある場合、
コマンドプロンプトから

shell

1> sample.exe inputfile.csv

というように指定したらプログラムが「inputfile.csv」を読み込んで動作するようにしておきます。
この時、「sample.exe」のアイコンに「inputfile.csv」ファイルアイコンをドラッグ&ドロップすることでも同様な挙動になります。

こういう実装にしておくと、ユーザーは任意のファイルをプログラムに入力することができるわけです。

もちろん質問者さんのように標準入力待ち(fmt.Scanなど)を作っておき、ターミナル(コマンドプロンプト等)に入力ファイルアイコンをドラッグ&ドロップするとファイルパスを入力したり、ファイルのコピーをしてペーストでファイルパスを貼り付け入力することもできます。(最後にENTERキーの入力は必要です)

あとはユーザーがどちらを期待するのかで選べばいいんじゃないでしょうか。

追記

GUIによる場合は各種OSのファイル選択ダイアログを開くことで対応します。

以下は最もシンプルな実装例です。

go

1package main 2 3import ( 4 "log" 5 6 "github.com/sqweek/dialog" 7) 8 9func main() { 10 filename, err := dialog.File().Filter("Mp4 file", "mp4").Load() 11 if err != nil { 12 log.Fatal(err) 13 } 14 log.Println(filename) 15}

投稿2022/07/25 06:47

編集2022/07/25 06:59
nobonobo

総合スコア3367

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nyako

2022/07/25 07:16

nobonoboさんいつもありがとうございます。説明不足でしたがCLIでの実装の最中に悩んでたことになります。 GUIの方法でもタイアログの開き方なども知ることが出来て良かったです。 素早いご回答本当にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問