Qtに関する覚え書き[ファイル関連]

ファイル読み込み

テキストファイル一括読み

一括で取り出したテキストを改行コードで分割し、行数分だけ回して処理します。
※ファイルがオープンできなければ、エラーメッセージをデバッグ出力して終了します。
※ここでは1行目をデバッグ出力した後、終了しています。

テキストファイル1行読み

テキストストリームから1行ずつ取り出して処理します。 やっていることは一括読みと同じです。
※ファイルをクローズするとテキストストリーム(in)が使えなくなるので 最後にクローズしています。

バイナリデータ読み込み

テキストストリーム(QTextStream)の代わりに、データストリーム(QDataStream)を使います。
これはまだ使ったことがないので・・・。

ファイル書き込み

テキストファイル一括書き込み

文字列をファイルに出力します。
※ファイルが存在する場合はメッセージを表示して終了します。
※ファイルがオープンできなければ、エラーメッセージをデバッグ出力して終了します。

バイナリデータ書き込み

テキストストリーム(QTextStream)の代わりに、データストリーム(QDataStream)を使います。
これはまだ使ったことがないので・・・。

設定保存/復元

現在のウインドウ状態を保存

ウインドウのXY座標・横×高さ・状態・最少幅・タイトル文字列を保存します。
※"settings.ini"ファイルが既に存在する場合は上書きします。

前回のウインドウ状態を復元

ファイルから必要な情報を取り出して設定を変更します。
※"settings.ini"ファイルが存在しないか、posなどのキーが入っていなければ何もしません。

設定ファイルの内容

"settings.ini"の内容です。
※左上位置(46, 15)・サイズ(800x600)・最大化(false)・最少幅(400)で、 タイトルが「サンプル画面ABC」の場合です。

ファイル情報

存在チェック

ファイルが存在すればtrue、存在しなければfalseを返します。

タイプのチェック

ファイルは1、フォルダは2、その他は0を返します。

ファイル情報取得例

次の3つのファイルを例とした情報の取得例です。

QFileInfo f1("c:/qt/memo.txt");
QFileInfo f2("c:/tmp/arc.tar.gz");
QFileInfo f3("c:/temp/memo.txt - ショートカット.lnk");

■情報の取得
取得使用例結果
ファイル名 (フルパス)f1.absoluteFilePath();
f2.absoluteFilePath();
"c:/qt/memo.txt"
"c:/tmp/arc.tar.gz"
パス (絶対パス)f1.absolutePath();
f2.absolutePath();
"c:/qt"
"c:/tmp"
ファイル名 (パスなし)f1.fileName();
f2.fileName();
"memo.txt"
"arc.tar.gz"
完全な ベース名f1.completeBaseName();
f2.completeBaseName();
"memo"
"arc.tar"
拡張子f1.suffix();
f2.suffix();
"txt"
"gz"
ベース名f1.baseName();
f2.baseName();
"memo"
"arc"
完全な 拡張子f1.completeSuffix();
f2.completeSuffix();
"txt"
"tar.gz"
リンク先 (絶対パス)f3.symLinkTarget(); "c:/qt/memo.txt"
作成日f1.created();QDateTime
更新日f1.lastModified();QDateTime
アクセス日f1.lastRead();QDateTime
サイズf1.size();
f3.size();
5590
5590
※Windowsのリンクファイルも、リンク先のファイルサイズを返します。

ファイル情報のチェック

ファイル情報のチェック方法です。

QFileInfo fi("チェックするパス");

■情報のチェック
用途使用例結果
絶対パスかfi.isAbsolute();true:絶対パス, false:他
相対パスかfi.isRelative();true:相対パス, false:他
ルートにあるかfi.isRoot();true:ある, false:ない
ファイルかfi.isFile();true:ファイル, false:他
フォルダかfi.isDir();true:フォルダ, false:他
隠しファイルかfi.isHidden(); true:隠しファイル, false:他
リンクファイルかfi.isSymLink(); true:リンクファイル, false:他
読込可能かfi.isReadable();true:可能, false:不可
書込可能かfi.isWritable();true:可能, false:不可
実行可能かfi.isExecutable();true:可能, false:不可

その他

全ファイル名取得

再帰呼び出しを使ってサブディレクトリの下層のファイル名まで取得します。
※ファイル名をリストに入れてからディレクトリごとに自分を呼び、 取得したリストのファイル名を追加していきます。
※どこかのページに載っていました。まだ使ったことがありません。

2016年12月