加载文件,只为查找使用
| 638 | |
| 639 | //加载文件,只为查找使用 |
| 640 | int FileManager::loadFileForSearch(ScintillaEditView* editView, QString filePath) |
| 641 | { |
| 642 | QFile file(filePath); |
| 643 | |
| 644 | QFlags<QFileDevice::Permission> power = QFile::permissions(filePath); |
| 645 | |
| 646 | QIODevice::OpenMode mode; |
| 647 | |
| 648 | if (!power.testFlag(QFile::WriteUser)) |
| 649 | { |
| 650 | //文件不能写 |
| 651 | mode = QIODevice::ExistingOnly | QIODevice::ReadOnly; |
| 652 | } |
| 653 | else |
| 654 | { |
| 655 | mode = QIODevice::ExistingOnly | QIODevice::ReadWrite; |
| 656 | } |
| 657 | |
| 658 | if (!file.open(mode)) |
| 659 | { |
| 660 | //qDebug() << file.error(); |
| 661 | return 2; |
| 662 | } |
| 663 | |
| 664 | qint64 fileSize = file.size(); |
| 665 | |
| 666 | qint64 bufferSizeRequested = fileSize + qMin((qint64)(1 << 20), (qint64)(fileSize / 6)); |
| 667 | |
| 668 | if (bufferSizeRequested > INT_MAX) |
| 669 | { |
| 670 | file.close(); |
| 671 | return 3; |
| 672 | } |
| 673 | |
| 674 | bool existGrbledCode = false; |
| 675 | QString outText; |
| 676 | CODE_ID fileTextCode = CODE_ID::UNKOWN; |
| 677 | |
| 678 | fileTextCode = CmpareMode::scanFileOutPut(file, fileTextCode, filePath, outText, existGrbledCode); |
| 679 | |
| 680 | //20230218 这里必须指明一下编码,否则后续会导致编码被修改 |
| 681 | editView->setProperty(Edit_Text_Code, fileTextCode); |
| 682 | |
| 683 | if (existGrbledCode) |
| 684 | { |
| 685 | //qDebug() << filePath; |
| 686 | file.close(); |
| 687 | return 4; |
| 688 | } |
| 689 | file.close(); |
| 690 | |
| 691 | editView->setText(outText); |
| 692 | |
| 693 | return 0; |
| 694 | } |
| 695 | |
| 696 | const int ONE_PAGE_BYTES = 4096; |
| 697 |
no test coverage detected