File I/O


文件 I/O 处理

QFile

QFile file("../Mytest.txt");
  • 打开

      file.open(QIODevice::ReadWrite);
  • 读写

      file.write("abc", 4);
  • 关闭

      file.close();

QByteArray 和 QString 区别

  • QByteArray 字节数 与外部 IO 交互
  • QString 字符数

QBuffer 缓存区

QBuffer buffer;
buffer.open(QIODevice::ReadWrite);

buffer.write("abc");
buffer.write("aabbcc");

buffer.close();

QBuffer 将 图片 保存在缓存区再读取

//  1. 创建 QBuffer
QBuffer buffer;
//  2. 打开缓存区 I/O 操作方式
buffer.open(QIODevice::ReadWrite);
//  3. 创建QPixmap
QPixmap pixmap("../xxx.png");
//  4. 将 pixmap 保存在 buffer
pixmap.save(&buffer,"PNG"); //  IO 格式
//  5. 关闭buffer
buffer.close();

//  将缓存区的图片加载到pixmap
QPixmap pixmap_w;
pixmap_w.loadFromData(buffer.buffer(), "PNG");

QTextStream

  • 可以将多种类型的数据组合, 相当于 echo

      QFile file("../xxx.txt");
      file.open(QIODevice::ReadWrite);
    
      QTextStream textstream(&file);
      textstream << 1 << 1.2 << "zzz";
    
      file.close();

QDataStream

  • 可以将多种类型的数据组合, 可以规定格式后存入取出

      QFile file("../file.txt");
      file.open(QIODevice::ReadWrite);
    
      QDataStream datastream(&file);
    
      int a = 0;
      double b =1.2;
      QString c = "zzz";
    
      datastream << a << b << c;

virtual memory

QFile file("../xxx.data");
file.open(QIODevice::ReadWrite);

file.seek(65535);   // 设置索引的位置 |  字符设备不处理 / 块设备处理 
file.write("1");

file.close();

file.open(QIODevice::ReadWrite);

uchar* ptr = file.map(0, 64*1024);
*ptr = 'a';
ptr[3] = 'b';

file.unmap(ptr);
file.close();

文章作者: bySouffle
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 bySouffle !
  目录