Tizen 파일 시스템에 액세스하는 방법

개요

이 문서에서는 Tizen 장치에서 파일을 읽고 쓰는 방법을 설명합니다. Tizen은 파일을 작성하고 읽고 쓰며 삭제하는 데 사용되는 간단한 인터페이스인 파일 시스템 API를 제공합니다.


목차


구성 파일에서 기능 정의

파일 시스템에 액세스하려면 필요한 사용 권한을 config.xml 파일에 추가해야 합니다. Tizen SDK를 사용하여 기능을 활성화하는 것이 좋습니다. config.xml 파일을 열고 Feature를 선택한후 tizen SDK의 http://tizen.org/api/filesystem 옵션을 확인합니다.

또한 config.xml 파일에 아래의 행을 추가해서 수동으로 추가할 수도 있습니다.


파일 만들기

Tizen FileSystemManagerObject를 사용하여 파일 시스템 API의 기능에 액세스할 수 있습니다. tizen.filesystem을 사용하여 FileSystemManagerObject 액세스할 수 있습니다.

디렉터리 확인

파일을 만들거나 파일 시스템에서 작업을 수행하려면 tizen.filesystem.resolve()를 사용하여 디렉터리를 확인하고 디렉터리를 나타내는 개체를 가져와야 합니다.

var documentsDir;
function onResolveSuccess(dir) {
documentsDir = dir;
}

function onResolveError(e) {
console.log('message: ' + e.message);
}

tizen.filesystem.resolve('documents', onResolveSuccess, onResolveError, 'rw');

파일 만들기

디렉터리를 나타내는 개체를 사용하여 파일을 만들 수 있습니다. CreateFile() 인수로 파일 이름을 사용합니다.

documentsDir.createFile('sample-text-file.txt');


파일에 쓰기

파일에 대한 액세스 권한을 얻으려면, 디렉터리를 나타내는 개체의 resolve() 메서드를 사용하여 파일을 확인해야 합니다. 해당 파일이 있으면 파일 핸들을 나타내는 File 개체를 받게 됩니다. 그에 대한 작업(읽기/쓰기)을 수행하려면 파일을 열어야 합니다. OpenStream() 메서드를 사용하여, 성공 FileStream 개체를 반환하는 파일을 열 수 있습니다. FileStream 열려 있는 파일에 대한 핸들 역할을 합니다.

OpenStream() 최대 4개의 인수를 사용합니다:

void openStream(FileMode mode, FileStreamSuccessCallback onsuccess, optional ErrorCallback? onerror, optional DOMString? encoding);

  • 모드 - 파일 액세스에 사용되는 모드
  • 성공 콜백 - 열기에 성공하여 FileStream 개체를 수신하면 호출됩니다
  • 오류 콜백 - 열기 실패 시 호출됩니다(선택 사항)
  • 인코딩 - 파일에 대한 작업에 사용돈 인코딩(선택 사항)
모드 사용법
"r"
"a"
"rw" 쓰기
try {
file = documentsDir.resolve('sample-text-file.txt');
} catch (exc) {
console.log('Could not resolve file: ' + exc.message);

// 오류 시 중지
return;
}

try {
file.openStream(
// 추가를 위해 열기
'a',

// 성공 콜백 - 텍스트 영역의 내용 추가
writeToStream,

// 오류 콜백
onError
);
} catch (exc) {
console.log('Could not write to file: ' + exc.message);
}

성공한 OpenStream() 메서드에서 FileStream 개체를 가져올 수 있습니다. 파일에 입력으로 기록될 텍스트를 사용하는 FileStream 개체에 write() 메서드를 사용할 수 있습니다. write() 함수 호출 후 스트림을 닫습니다.

function writeToStream(fileStream) {
try {
fileStream.write('This is my first sentence to write.');
fileStream.close();
} catch (exc) {
console.log('Could not write to file: ' + exc.message);
}


파일에서 읽기

두 가지 방식으로 파일에서 읽을 수 있습니다. 그러한 방법 중 하나는 파일을 확인하고 파일과 연관된 스트림을 가져오고 그 스트림에서 읽은 것입니다. 이 방법은 위에서 설명한 write()에 사용된 것과 비슷합니다.

File 개체의 fileSize 특성을 사용하여 파일의 현재 크기를 얻을 수 있습니다.

try {
file = documentsDir.resolve('sample-text-file.txt');
} catch (exc) {
console.log('Could not resolve file: ' + exc.message);

// 오류 시 중지
return;
}

try {
file.openStream(
// 읽기 위해 열기
'r',

// 성공 콜백 - 텍스트 영역의 내용 추가
readFromStream,

// 오류 콜백
onError
);
} catch (exc) {
console.log('Could not write to file: ' + exc.message);
}

파일을 열면 스트림의 위치가 파일의 시작 부분으로 설정됩니다. 위치는 다음 읽기 작업 시 처음 읽을 바이트를 나타냅니다. 스트림의 위치 특성을 사용하여 위치를 설정합니다. 파일에서 n바이트를 읽으면 위치가 n바이트 추가로 이동하게 됩니다. bytesAvailable 특성은 파일 끝에 도달하기 전까지 여전히 읽을 수 있는 바이트 수를 나타냅니다.

위치 특성을 사용하여 바이트를 읽을 위치를 설정하고, read() 함수를 호출해서 파일에서 나머지 바이트를 모두 읽을 있습니다.

function readFromStream(fileStream) {
try {
fileStream.position = 10;
var contents = fileStream.read(fileStream.bytesAvailable);
fileStream.close();
console.log('file contents after pos 10:' + contents);
} catch (exc) {
console.log('Could not read from file: ' + exc.message);
}

두 번째 방법은 File 개체의 readAsText() 메서드를 사용하는 것입니다. 이 메서드를 사용하면 파일 스트림을 열 필요가 없습니다. readAsText() 메서드의 성공 콜백이 파일 내용을 문자열 형태로 받습니다.

function displayFileContentsText() {
var file;
try {
file = documentsDir.resolve('sample-text-file.txt');
console.log('File size: ' + file.fileSize);
} catch (exc) {
console.log('Could not resolve file: ' + exc.message);

// 오류 시 중지
return;
}

try {
file.readAsText(
// 성공 콜백 - 파일의 내용 표시
function(contents) {
console.log('File contents:' + contents);
},

// 오류 콜백
onError
);
} catch (exc) {
console.log('readAsText() exception:' + exc.message + '
');
}
}


파일 삭제

deleteFile() 메서드를 사용하여 파일을 삭제할 수 있습니다. 전체 경로를 포함한 파일 이름을 매개 변수로 사용합니다.

function deleteSampleFile() {

try {
documentsDir.deleteFile(
documentsDir.fullPath + '/sample-text-file.txt',
} catch (exc) {
console.log('deleteSampleFile(): ' + exc.message);
}