120 lines
3.3 KiB
Markdown
120 lines
3.3 KiB
Markdown
# FileIO
|
|
|
|
## General
|
|
|
|
A QML-Plugin which provides basic file operations.
|
|
|
|
## Including FileIO in Your Project
|
|
|
|
First copy the FileIO-directory into your project path somewhere:
|
|
|
|
my-project
|
|
|--my-project.pro
|
|
|--src
|
|
|--FileIO
|
|
| |--src
|
|
| |--FileIO.pri
|
|
|--my-project.cpp
|
|
|
|
Next include FileIO.pri into my-project.pro:
|
|
|
|
TARGET = my-project
|
|
|
|
CONFIG += sailfishapp
|
|
|
|
SOURCES += src/my-project.cpp
|
|
|
|
.
|
|
.
|
|
.
|
|
|
|
include (src/FileIO/FileIO.pri)
|
|
|
|
Now you can include the header in your main cpp and register the component:
|
|
|
|
#include <QtQuick>
|
|
#include <sailfishapp.h>
|
|
#include <QGuiApplication>
|
|
#include "fileio.h"
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
// Get App and QML-View objects
|
|
QScopedPointer<QGuiApplication> app(SailfishApp::application(argc, argv));
|
|
QScopedPointer<QQuickView> view(SailfishApp::createView());
|
|
|
|
// Register FileIO Class
|
|
qmlRegisterType<FileIO, 1>("harbour.my-project.FileIO", 1, 0, "FileIO");
|
|
|
|
// Prepare the QML and set Homedir
|
|
view->setSource(SailfishApp::pathTo("qml/my-project.qml"));
|
|
view->show();
|
|
|
|
// Run the app
|
|
return app->exec();
|
|
}
|
|
|
|
Now you can use the FileIO Object in your QML
|
|
|
|
## Using the QML Object
|
|
|
|
Here are some short examples:
|
|
|
|
### Reading Files
|
|
|
|
import harbour.my-project.FileIO 1.0
|
|
|
|
FileIO {
|
|
id: myFile
|
|
source: "/home/nemo/some-file.txt"
|
|
onError: { console.log(msg); }
|
|
}
|
|
|
|
var content = myFile.read()
|
|
|
|
First the FileIO-Plugin is imported in the QML file. Now a FileIO object with the ID myFile is created. The property **source** holds the filename of the file to read or write. The signal **onError** is called when something goes wrong, **msg** contains the error message.
|
|
|
|
After declaring the object the method **read()** is used, it retuns the contenst of the file as a string.
|
|
|
|
### Writing files
|
|
|
|
import harbour.my-project.FileIO 1.0
|
|
|
|
FileIO {
|
|
id: myFile
|
|
source: "/home/nemo/some-file.txt"
|
|
onError: { console.log(msg); }
|
|
}
|
|
|
|
myFile.write("Hello World")
|
|
|
|
The declaration stays the same as for reading files.
|
|
|
|
For writing the method **write("content")** is called. This mehtod will write the passed string to the file defined in **source**. The content of the file will be replaced with the content passed to the method.
|
|
|
|
### Checking if a File Exists
|
|
|
|
import harbour.my-project.FileIO 1.0
|
|
|
|
FileIO { id: fileIO }
|
|
|
|
if (fileIO.exists("/home/nemo/myfile.txt")) {
|
|
console.log("file exists");
|
|
} else {
|
|
console.log("file does not exists");
|
|
}
|
|
|
|
The method **exists(file)** gets passed the path of the file or directory to check. If the file or directory exists the method will return **true**, otherwise it will return **false**
|
|
|
|
The method **exists()** can also be called without a parameter, in this case it will check if the file defined in **source** exists.
|
|
|
|
|
|
### Creating Directories
|
|
|
|
import harbour.my-project.FileIO 1.0
|
|
|
|
FileIO { id: fileIO }
|
|
|
|
fileIO.mkpath("/tmp/directory");
|
|
|
|
The method **mkpath(directory)** will create the given directory, if it does not exist already. The method will return **true** if the directory exists or was successfully created, otherwise it will return **false** |