24

私は Qt の初心者で、問題が発生したばかりです。ファイルを探していますSomePath/NewDirectoryA/NewFile.kml(プロジェクト内のセマンティクスを維持するためだけにこのディレクトリを持つ、NewFile.kml内の唯一のファイルになります)。NewDirectoryA

存在する場合SomePath/NewDirectoryA/NewFile.kmlはコードで使用し、存在しない場合は作成する必要があります。このファイルが存在しない場合、このディレクトリも に存在しませんSomePath。したがって、ファイルを作成する必要がある場合は、QFile を使用して ReadWrite または WriteOnly モードで開くことができます。

しかし、問題は、ディレクトリ自体でファイルを作成する必要があることです。ファイル名で
試してみましたが、うまくいきませんでした。QFileSomePath/NewDirectoryA/NewFile.kml

特定の場所 (SomePath) の新しいディレクトリ (NewDirectorA) に新しいファイル (NewFile.kml) を作成する方法を教えてください。

4

2 に答える 2

42

bool QFile :: open(OpenModeモード)[仮想]

[...]

注:WriteOnlyまたはReadWriteモードでは、関連するファイルがまだ存在しない場合、この関数はファイルを開く前に新しいファイルを作成しようとします。

ファイル作成に関するQtの警告

プラットフォーム固有の問題

ファイルパーミッションは、UnixライクなシステムとWindowsでは異なる方法で処理されます。Unixライクなシステムの書き込み不可能なディレクトリでは、ファイルを作成できません。これはWindowsでは常に当てはまるわけではありません。たとえば、「マイドキュメント」ディレクトリは通常書き込み可能ではありませんが、その中にファイルを作成することは可能です。

ディレクトリはで作成されます

bool QDir :: mkdir (const QString&dirName)const

dirNameというサブディレクトリを作成します。

bool QDir :: mkpath (const QString&dirPath)const

ディレクトリパスdirPathを作成します。

この関数は、ディレクトリの作成に必要なすべての親ディレクトリを作成します。

于 2010-06-11T16:19:17.010 に答える
7

私の知る限り、ファイルとディレクトリを直接作成することはできませんQFile。最初にディレクトリQDir::mkpathを作成し (フル パスが作成されます)、次にファイルを作成する必要があります ( QFile::open)。

QString path("SomePath/NewDirectoryA/");
QDir dir; // Initialize to the desired dir if 'path' is relative
          // By default the program's working directory "." is used.

// We create the directory if needed
if (!dir.exists(path))
    dir.mkpath(path); // You can check the success if needed

QFile file(path + "NewFile.kml");
file.open(QIODevice::WriteOnly); // Or QIODevice::ReadWrite
于 2018-03-26T11:46:49.733 に答える