2

会社のネットワークにファイルを保存する必要があります。これは、ファイル ダイアログ ボックスなどを使用せずにアプリケーションにコーディングする必要があります。パスを指定せずにファイルを保存すると、アプリケーションがあるディレクトリに完全に保存されますが、それを実行しようとするとネットワークは何も起こりません。これは私が保存しなければならないものです。

QFile outfile;
outfile.setFileName("//DTPRIMARY/MyFile.htm");
outfile.open(QIODevice::WriteOnly);
QTextStream out(&outfile);
out << textEdit->toHtml();
out.flush();
outfile.close();

実際にはここに保存したいのです\\DTPRIMARY\Inetpub\wwwrootが、問題の一部である可能性があると考えて他のフォルダーを取り出しましたが、そうではありませんでした。そして、「\」の代わりに「/」を使用しています。これは、いくつかの場所でそうするように言われているためです (ファイル パスで「\」または「/」を使用する必要がある理由を本当に理解していないので、間違っている可能性があります)。同上)

これを行う方法を知っている人はいますか?私のコードの何が問題なのですか?

4

1 に答える 1

1

UNC パスは正常に完全に機能するはずです。ローカル ファイルでこれをテストできます。たとえば"\\?\C:\MyFile.htm"、C ドライブの上部にある MyFile.htm というファイルです。

通常、パスは次のようになります\\machine\share\\dtprimaray\share\MyFile.htm

「/」を使用する理由は、C 言語では次の文字が特殊であることを意味するために \ を使用するためです。したがって、\t はタブ、\n は改行です。DOS は、ファイル区切り文字に「/」を使用していた初期の OS にコピーされたもので (申し訳ありませんがの影響を受けています)、Microsoft は DOS があまりコピーのように見えることを望んでいませんでした。それ以来、バグの原因となっています。

を使用して、次の \ は実際には \ であるとCに\\言うことが できます。\\\\\\\\\/

ちょうど私のマシンでそれをテストしました

QFile file("//machinename/downloads/MyFile.htm");
file.open(QIODevice::WriteOnly);
file.write("blah");
file.close();
于 2012-08-21T19:41:04.543 に答える