加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

QFile open函数打不开含有中文路径的文件

(2010-11-13 11:11:41)
标签:

编码方式

测试

返回

中文路径

qfile

打不开

杂谈

分类: 工作

    开始使用1和2两种编码,QFile open 打不开含有中文路径的文件,全英文的一切正常。后来使用3的编码方式,都可以成功打开了。

 

1.  QFile file("c:/测试/test/test.cpp");
    file.open(QIODevice::ReadOnly);//返回false

 

2.   string fileName = "c:/测试/test/test.cpp"
     QFile file(fileName.c_str());
     file.open(QIODevice::ReadOnly);//返回false

 

3.    string fileName = "c:/测试/test/test.cpp"
      QFile file(QString::fromLocal8Bit(m_sFileName.c_str()));
      file.open(QIODevice::ReadOnly);//返回true

 

下面转的别人的:

     QFile类是操作文件的输入输出设备类。QFile是一个用来读写二进制文件与文本文件的输入输出设备。QFile可以被自己或更方便的类 DataStream或QTextStream使用。文件的名字通常通过构造传递,但可以通过setName()来修改。你可以使用exists()来检查文件是否存在,并且通过remove()来移除一个文件。文件通过open()被打开,通过close()来关闭,通过flush()来更新。数据通常使。QDataStream或QTextStream来被读出写入,但你可以通过readBlock()和readLine()读出,通过 writeBlock()写入。QFile还支持getch(),ungetch(),putch()。文件的大小可以通过size()返回。你可以通过使用at()函数来获得文件当前位置或移动到一个新的文件位置。这里有一个代码片段,它使用QTextStream一行一行读一个文本文件。它以一个新的行号打印每一行。
    QStringList lines;
    QFile file(“file.txt”);
    if ( file.open(IO_ReadOnly))
    {
        QTextStream stream( &file );
        QString line;
        int i = 1;
        while ( !stream . eof() )
        {
            line = stream . readLine();
            printf( "=:%s\n",i++,line.latin1());
            lines += line;
        }
        file . close();
    }
写文本一样容易。下面的例子显示了如何写入我们在上例中读到字符串列表里的数据:
    QFile file("file.txt");
    if (file . open(IO_WriteOnly))
    {
        QTextStream stream(&file);
        for (QStringList :: Iterator it = lines.begin(); it != lines.end();++it)
            stream << *it << "\n";
        file . close();
    }

QT 使用Unicode作为文件名字。如果你想在Unix系统上使用你自己的输入与输出,你应该使用encodeName和decodeName()莱转换文件名字到你本地的编码。

0

阅读 收藏 喜欢 打印举报/Report
前一篇:持续失眠中
后一篇:深秋
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有