📄 filewriter.cpp
字号:
/******************************************************************************** Copyright (C) 1992-2006 Trolltech ASA. All rights reserved.**** This file is part of the qt3to4 porting application of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file. Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include "filewriter.h"#include <QFile>#include <QFileInfo>#include <QDir>#include <ctype.h>FileWriter *FileWriter::theInstance = 0;FileWriter *FileWriter::instance(){ if(!theInstance) theInstance = new FileWriter(); return theInstance;}void FileWriter::deleteInstance(){ if(theInstance) { delete theInstance; theInstance=0; }}FileWriter::FileWriter(OverWriteFiles overWrite, QString overwriteMsg):overWriteFiles(overWrite),overwriteMessage(overwriteMsg){ if(overwriteMessage.isEmpty()) overwriteMessage = "Convert file ";}FileWriter::WriteResult FileWriter::writeFileVerbously(QString filePath, QByteArray contents){ const WriteResult result = writeFile(filePath, contents); if (result == WriteSucceeded) { QString cleanPath = QDir::cleanPath(filePath); printf("Wrote to file: %s \n", QDir::convertSeparators(cleanPath).toLocal8Bit().constData()); } return result;}FileWriter::WriteResult FileWriter::writeFile(QString filePath, QByteArray contents){ if(filePath.isEmpty()) return WriteFailed; QString path = QFileInfo(filePath).path(); if (!QDir().mkpath(path)){ printf("Error creating path %s \n", QDir::convertSeparators(path).toLocal8Bit().constData()); } QString cleanPath = QDir::cleanPath(filePath); QFile f(cleanPath); if (f.exists()) { if (overWriteFiles == DontOverWrite) { printf("Error writing file %s: It already exists \n", QDir::convertSeparators(cleanPath).toLatin1().constData()); return WriteFailed; } else if(overWriteFiles == AskOnOverWrite) { printf("%s%s? (Y)es, (N)o, (A)ll ", overwriteMessage.toLatin1().constData(), QDir::convertSeparators(cleanPath).toLatin1().constData()); char answer = 0; while (answer != 'y' && answer != 'n' && answer != 'a') { scanf("%c", &answer); answer = tolower(answer); } if(answer == 'n') return WriteSkipped; else if(answer == 'a') overWriteFiles=AlwaysOverWrite; } } f.open(QFile::WriteOnly); if (f.isOpen() && f.write(contents) == contents.size()) return WriteSucceeded; printf("Could not write to to file: %s. Is it write protected?\n", QDir::convertSeparators(filePath).toLatin1().constData()); return WriteFailed;}/* Sets the write mode for the file writer. writeMode is one of DontOverWrite, AlwaysOverWrite, AskOnOverWrite.*/void FileWriter::setOverwriteFiles(OverWriteFiles writeMode){ overWriteFiles = writeMode;}QByteArray detectLineEndings(const QByteArray &array){ if (array.contains("\r\n")) { return "\r\n"; } else { return "\n"; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -