【问题标题】:Saving a file to a network in Qt在 Qt 中将文件保存到网络
【发布时间】:2012-08-17 05:01:20
【问题描述】:

我需要将文件保存到我公司的网络。这需要不使用文件对话框或任何东西编码到我的应用程序中。当我在不指定路径的情况下保存文件时,它会完全保存在我的应用程序所在的目录中,但是当我尝试这样做时,网络没有任何反应。这是我必须保存的。

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

我实际上想将它保存在这里\\DTPRIMARY\Inetpub\wwwroot,但取出其他文件夹认为这可能是问题的一部分,但事实并非如此。而且我使用'/'而不是'\',因为这就是一些地方所说的(我从来没有真正理解为什么文件路径必须使用'\'或'/'虽然它可能是错误的身份证)

有人知道怎么做/我的代码有什么问题吗?

【问题讨论】:

    标签: c++ qt network-programming save qfile


    【解决方案1】:

    UNC 路径应该可以正常工作,您可以使用本地文件进行测试,例如 "\\?\C:\MyFile.htm" 将是 C 盘顶部名为 MyFile.htm 的文件

    通常路径是\\machine\share 例如\\dtprimaray\share\MyFile.htm

    之所以使用“/”是因为C语言用\表示下一个字符是特殊的,所以\t是制表符,\n是换行符。 DOS 被复制(抱歉影响)一个使用“/”作为文件分隔符的早期操作系统,Microsoft 不希望 DOS 看起来太像副本。从那以后,它一直是错误的来源。

    你可以用\\对C说下一个\真的是一个\ - 但是当你必须写\\\\来表示\\\\表示\时很容易出错 -所以 Windows 允许你使用 /

    刚刚在我的机器上测试过

    QFile file("//machinename/downloads/MyFile.htm");
    file.open(QIODevice::WriteOnly);
    file.write("blah");
    file.close();
    

    【讨论】:

    • 这真的适用于 Windows 吗? AFAIK QFile 要求远程目录在本地安装在 *nix 系统上,除非自从我搞砸后发生了一些变化。
    • @BrianRoach 是的,它可以在 Windows 上运行(假设权限没问题)这是 Windows 从 VMS 继承的东西之一!在 Unix 上不能有 UNC 路径,你需要一个 NFS 的本地挂载点
    • 哦,好吧,为什么使用“/”更有意义,我还在上大学,如果你不知道,但现在正在实习,如果教授真的会解释像你那样做我的生活会容易得多!所以我真的把域?或者它应该是引用正在使用的机器的东西?我需要做的是能够被不同机器上的不同用户使用,但它们都保存到同一个文件夹中,相同的文件覆盖了调用时保存的上一个文件
    • @gary - 有很多向后兼容性,我们需要解决的错误以及错误但我们无法在现场进行更改的东西。
    • 什么意思?我的代码有兼容性问题?你的意思是我们不能在现场改变,因为我们不能改变域名/机器名?我的计划是将应用程序保存在服务器上,用户将在他们的桌面上创建一个快捷方式。我不确定这是否有助于或解决“改变领域”??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多