支持修改文件时间

This commit is contained in:
sonichy 2022-03-21 18:23:47 +08:00
parent a4e196fed8
commit dbb86d6a58
3 changed files with 36 additions and 16 deletions

BIN
FileTrans

Binary file not shown.

View File

@ -1,13 +1,5 @@
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QNetworkInterface>
#include <QFileDialog>
#include <QIntValidator>
#include <QMessageBox>
#include <QMimeDatabase>
#include <QDateTime>
#include <QMetaEnum>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
@ -98,6 +90,9 @@ void MainWindow::newConnect()
if (state == 0) {
state = 1;
} else {
file.close();
file.open(QIODevice::ReadOnly);
qDebug() << "setFileTime" << file.setFileTime(QDateTime::fromTime_t(lastModified), QFileDevice::FileModificationTime);
file.close();
state = 0;
length = 0;
@ -115,15 +110,25 @@ void MainWindow::newConnect()
void MainWindow::readyRead()
{
QByteArray BA = tcpSocket->readAll();
//qDebug() << BA ;
//qDebug() << BA ;
if (state == 0) {
QString filename = BA;
ui->textBrowser->append("[" + QDateTime::currentDateTime().toString("HH:mm:ss") + "] " + "接收:" + filename);
QString filepath = ui->lineEdit_root_dir->text() + "/" + filename;
QString s = BA;
QJsonParseError JPE;
QJsonDocument JD = QJsonDocument::fromJson(s.toUtf8(), &JPE);
QString fileName = "?";
if (JPE.error == QJsonParseError::NoError) {
if (JD.isObject()) {
QJsonObject JO = JD.object();
fileName = JO.value("fileName").toString();
lastModified = JO.value("lastModified").toDouble()/1000;
}
}
ui->textBrowser->append("[" + QDateTime::currentDateTime().toString("HH:mm:ss") + "] " + "接收:" + fileName);
QString filepath = ui->lineEdit_root_dir->text() + "/" + fileName;
file.setFileName(filepath);
file.open(QIODevice::WriteOnly);
} else {
file.write(BA);
file.write(BA);
length += BA.length();
ui->statusBar->showMessage("接收:" + BS(length));
}
@ -161,10 +166,14 @@ void MainWindow::upload(QString filepath)
tcpSocket1->connectToHost(QHostAddress(ui->lineEdit_ip->text()), port);
connect(tcpSocket1, &QTcpSocket::connected, [=](){
QString filename = QFileInfo(filepath).fileName();
tcpSocket1->write(filename.toUtf8());
QString fileName = QFileInfo(filepath).fileName();
QJsonObject JO;
JO.insert("fileName", fileName);
JO.insert("lastModified", static_cast<qint64>(QFileInfo(filepath).lastModified().toTime_t())*1000);
QString s = QJsonDocument(JO).toJson(QJsonDocument::Compact);
tcpSocket1->write(s.toUtf8());
tcpSocket1->close();
ui->textBrowser->append("[" + QDateTime::currentDateTime().toString("HH:mm:ss") + "] 上传:" + filename);
ui->textBrowser->append("[" + QDateTime::currentDateTime().toString("HH:mm:ss") + "] 上传:" + s);
});
QTcpSocket *tcpSocket2 = new QTcpSocket(this);

View File

@ -6,6 +6,16 @@
#include <QTcpServer>
#include <QTcpSocket>
#include <QFile>
#include <QDebug>
#include <QNetworkInterface>
#include <QFileDialog>
#include <QIntValidator>
#include <QMessageBox>
#include <QMimeDatabase>
#include <QDateTime>
#include <QMetaEnum>
#include <QJsonObject>
#include <QJsonDocument>
namespace Ui {
class MainWindow;
@ -30,6 +40,7 @@ private:
qint64 length;
QString BS(long b);
void upload(QString filepath);
double lastModified = 0;
private slots:
void newConnect();