2
QFile file(filePath);
QFileInfo fileInfo(file);

file.open(QIODevice::ReadWrite); //or WriteOnly

if(!fileInfo.isWritable())
{
    //Log error
}
else
{
    //Save to file
}

問題は、filepathにフルアクセスがあり、ファイルが作成されて書き込み可能であるにもかかわらず、isWritable()がfalseを返すことです。書き込みアクセスチェックを削除してファイルに書き込むだけで、書き込みは成功します。QFile::openもtrueを返します。何か案は?

4

2 に答える 2

4

QFileInfo::isWritable()開いているファイルが書き込み可能かどうかを確認するためのものではなく、ファイルに対する現在のユーザーの権限を確認するためのものです。ファイルを開く操作が成功したかどうかを確認するだけの場合は、呼び出しからの戻り値を確認してくださいQFile::open()。trueが返された場合、ファイルは書き込みの準備ができています。falseが返された場合は、エラー処理を行ってください。

isWritable()あなたの場合、なぜ失敗するのかわかりません。Windowsは、ファイルが開いていると見なしているため、別のopen()呼び出しから書き込みできない可能性があります。本当に許可を確認したい場合はisWritable()、ファイルを開く前に電話してください。

于 2012-04-13T15:29:25.817 に答える
0

プログラムを管理者として実行してみてください(右クリックして)。おそらく、この問題はUACが原因です。

于 2012-04-13T15:41:38.283 に答える