小编Rah*_* De的帖子

自动选择文件I/O的缓冲区大小

我有一个非常基本的怀疑.通常,我必须编写使用缓冲文件I/O的应用程序,每次我遇到选择缓冲区大小的困境时,我最终会通过非常讨厌的结果进行反复试验.我想知道是否有任何方法或算法可以根据Teracopy在Windows中处理文件时所基于的底层平台自动确定作业的最佳缓冲区大小.我主要使用Qt作为GUI.

如果可能的话,非常感谢C/C++/C#/ Java中的一个小例子!

谢谢!

c c++ java file-io buffer

8
推荐指数
1
解决办法
3601
查看次数

从不同的线程更新QProgressbar

我已经开发了自己的混合流密码,对于GUI,我使用的是Qt.最初我是在单个线程上编写的,但它是一个流密码,当在大文件上运行时,GUI功能失调.所以我将加密/解密转移到单独的Qthread.为了显示进度,我在GUI上包含了一个标准的QProgressbar.但是当我运行文件I/O时,加密/解密工作完美但进度条没有正确更新.整个操作完成后,进度条突然从0%变为100%,表明在操作过程中没有机会更新.对于代码,我将完成的百分比从FileCrypto发送到主GUI线程到QProgressbar的setValue(int)插槽.由于它不起作用,我还尝试将一个int poitner发送到FileCrypto线程,同时用百分比更新指针并在GUI线程上使用QTimer在本地检查int值的值并更新进度条但仍然我得到了完全相同的结果.

这是我的代码:

FileCrypto类:

#include <QThread>
#include <QFile>
#include <PolyVernam.h>  //my algo header

class FileCrypto : public QThread
{
    Q_OBJECT

public:
    FileCrypto(QString, QString, int);
    bool stopIt;

protected:
    void run();

signals:
    void completed(int);
    void msg(QString);
    void pathMsg1(QString);
    void pathMsg2(QString);
    void keyMsg(QString);

private:
    QFile src, dest;
    QString tag;
    int mode;
    qint64 length;
    PolyVernam pv;
};
Run Code Online (Sandbox Code Playgroud)

代码:

#include <FileCrypto.h>

FileCrypto::FileCrypto(QString input, QString keyFile, int mode)
{
    stopIt = false;
    this->mode = mode;
    src.setFileName(input);

    if(mode == 1)
    {
        emit msg("Current Encryption/Decryption status: Encrypting file... …
Run Code Online (Sandbox Code Playgroud)

qt cryptography file qprogressbar qthread

2
推荐指数
1
解决办法
2483
查看次数

标签 统计

buffer ×1

c ×1

c++ ×1

cryptography ×1

file ×1

file-io ×1

java ×1

qprogressbar ×1

qt ×1

qthread ×1