file system
타우리의 파일시스템을 사용하려면 타우리 설정파일에 사용할 api를 명시해줘야 한다.
src-tauri/tauri.conf.json
{
"tauri": {
"allowlist": {
"fs": {
"all": true, // 사용여부 true
"readFile": true,
"writeFile": true,
"readDir": true,
"copyFile": true,
"createDir": true,
"removeDir": true,
"removeFile": true,
"renameFile": true,
"exists": true,
"scope": ["$DOCUMENT/**"] // 접근할 디렉터리를 지정
}
}
}
}
scope
디렉터리 접근성
"scope": ["$DOCUMENT/**"]
타우리는 사용자의 pc를 보호하기 위해 pc내 절대경로나 상위디렉터리 (../) 를 허용하지 않는다. 읽기 또는 쓰기가 가능한 디렉터리 스코프를 성정해줄때 위 옵션을 사용한다.
문서폴더 외에 가능한 스코프는 여기 (opens in a new tab)를 참고하자.
readTextFile
읽기 api들이 몇가지 있지만 문서작업시 필요한 데이터는 역시 텍스트 데이터다. 텍스트 읽기 함수의 시그니처와 사용예제는 다음과 같다.
readTextFile(filePath: string, options?: FsOptions): Promise<string>
import { readTextFile, BaseDirectory } from '@tauri-apps/api/fs';
const contents = await readTextFile(
'path/file.json',
{ dir: BaseDirectory.Document }
); // utf-8
스코프에서 설정한 폴더는 BaseDirectory
이넘를 통해 접근가능하다.
writeTextFile
쓰기 api도 읽기와 별반 다르지 않다.
writeTextFile(path: string, contents: string, options?: FsOptions): Promise<void>
import { writeTextFile, BaseDirectory } from '@tauri-apps/api/fs';
await writeTextFile(
'app.conf',
'file contents',
{ dir: BaseDirectory.Document }
);
이쯤되면 패턴이 명확해서 더이상의 설명은 필요없을듯 하다
removeFile
import { removeFile, BaseDirectory } from '@tauri-apps/api/fs';
await removeFile('app.conf', { dir: BaseDirectory.AppConfig });
readDir
import { readDir, BaseDirectory } from '@tauri-apps/api/fs';
const entries = await readDir('users', { dir: BaseDirectory.AppData, recursive: true }); // 재귀함수로 하위 폴더와 디렉터리를 모두 가져온다.
function processEntries(entries) {
for (const entry of entries) {
console.log(`Entry: ${entry.path}`);
if (entry.children) {
processEntries(entry.children)
}
}
}
removeDir
import { removeDir, BaseDirectory } from '@tauri-apps/api/fs';
await removeDir('users', { dir: BaseDirectory.AppData });
바이너리 파일 읽기 쓰기도 있지만 생략