Проблема добавления файловой системы tizen.filesystem

В настоящее время у меня есть веб-приложение, которое может читать и записывать файлы на Samsung Tizen TV v2.4 (прошивка: T-HKMLAKUC-1006.4)

Добавление наведения, похоже, не работает.

Я могу сделать следующее без каких-либо проблем:

tizen.filesystem.resolve('documents/log.txt', (file) => {
    file.openStream("w", (fs) => {

        fs.write('Tizen .. '); // Works

        console.log('written to log Tizen ... '); // View if its running the code block

        // This block is ran as i get the console log from this function

    }, (e) => {

        console.log("Error " + e.message);
        // No Errors thrown

    }, "UTF-8");
}, (e) => {

    // No Errors thrown

}, "a");

Если я изменю «w» на «a», который должен добавляться к файлу, файл будет пустым.

tizen.filesystem.resolve('documents/log.txt', (file) => {
    file.openStream("a", (fs) => {

        console.log('written to log Tizen ... '); // View if its running the code block

        // This block is ran as i get the console log from this function

        fs.write('Tizen .. '); // When i read it nothing here

    }, (e) => {
        console.log("Error " + e.message);
    }, "UTF-8");
});

Кто-нибудь еще видел эту проблему? Спасибо

Если я отслеживаю журналы консоли из этой функции, я получаю следующее:

4:59:21 pm | YaBRm3kxLCctUNmhl034oLe0QQA= | "" // View the file

4:59:21 pm | YaBRm3kxLCctUNmhl034oLe0QQA= | "running append to file" // Run the append function
4:59:21 pm | YaBRm3kxLCctUNmhl034oLe0QQA= | "written to log Tizen ... " // Append function shows its running the success block

4:59:22 pm | YaBRm3kxLCctUNmhl034oLe0QQA= | "Tizen .. " // View the file (and its appended)

4:59:23 pm | YaBRm3kxLCctUNmhl034oLe0QQA= | "running append to file" // Run the append function again
4:59:23 pm | YaBRm3kxLCctUNmhl034oLe0QQA= | "written to log Tizen ... " // Shows its running the append function correctly
4:59:24 pm | YaBRm3kxLCctUNmhl034oLe0QQA= | "" // View the file and its empty

person Peter I    schedule 28.04.2017    source источник
comment
Поделитесь сообщением об ошибке в журнале консоли (e.message)   -  person Armaan-Ul-Islam    schedule 02.05.2017
comment
Как указано выше, ошибка не возвращается, просто в файл ничего не записывается.   -  person Peter I    schedule 03.05.2017


Ответы (3)


Думаю баг в прошивке, поэтому режим добавления работает некорректно. Проверял на версии прошивки T-HKMLAKUC-1008.2, повторяется та же ошибка. Мой обходной путь: чтение текущего содержимого из файла, объединение с новым содержимым и повторная запись в файл.

1) Создать файл

  function createFile() {
        tizen.filesystem.resolve('downloads', (dir) => {
            var tizenFile = dir.createFile('/2017_10_08_13_13_21_826.log');
        }, (error) => {
            console.error("error resolve dir", error);
        }, 'rw');
    }

2) Прочитайте текущее содержимое из файла, добавьте новое содержимое и снова запишите в файл.

function appendToFile(newContents) {
    tizen.filesystem.resolve('downloads/2017_10_08_13_13_21_826.log', (tizenFile) => {
        tizenFile.readAsText((currentContent) => {
            var writeContents = currentContent + newContents;
            tizenFile.openStream('w', (stream) => {
                stream.write(writeContents);
                stream.close();
            }, (error) => {
                console.error("error open stream content", error);
            }, 'UTF-8');
        }, (error) => {
            console.error("error read current content", error);
        }, 'UTF-8')
    }, (error) => {
        console.error("error resolve log file", error);
    }, 'r');
}

Режим 'w' работает корректно.

person AndreyNik    schedule 08.10.2017
comment
Хорошо, что кто-то еще столкнулся с этой проблемой. Я пришел к такому же выводу и даже поднял его с Samsung, который сказал, что это не ошибка. Вы знаете, было ли это исправлено в более поздних версиях вообще? Спасибо. - person Peter I; 09.10.2017
comment
Теперь я обновил T-HKMLAKUC-1008.2 до T-HKMLAKUC-2007.4, и режим «а» работает правильно. Я думаю, проблема исправлена, но не знаю, с какой версии прошивки исправлено. - person AndreyNik; 12.10.2017

Кажется, ошибка может быть даже с resolve() здесь, поскольку вы говорите, что openStream() не выдает ошибку в журнале. Вместо этого попробуйте использовать этот код, чтобы поймать сообщение об ошибке и отладить его.

tizen.filesystem.resolve('documents/log.txt', (file) => {
    file.openStream("a", (fs) => {
        fs.write('Tizen .. '); // When i read it nothing here
    }, (e) => {
        console.log("Error at openStream:" + e.message);
    }, "UTF-8");
    , 
    function(e) {
     console.log("Error at resolve:" + e.message);
   }
}); 
person Armaan-Ul-Islam    schedule 04.05.2017
comment
Привет, спасибо за помощь, извините, я не ясно выразился выше, он запускает функциональный блок успеха, но не добавляется к файлу. Я добавил некоторую дополнительную информацию в вопрос выше, предоставив некоторые консольные журналы процесса. Спасибо - person Peter I; 09.05.2017

Я делюсь с вами примером кода здесь. На моей машине работало нормально. Убедитесь, что вы пытаетесь прочитать файл после завершения процесса добавления.

function createFile(){// Create file:   
    var newDir, newFile;

    tizen.filesystem.resolve("documents", function(dir) 
            {
               newDir = dir.createDirectory("myFDir3");     //Create new directory
               newFile = newDir.createFile("myFile.txt");   //Create new File
            },
        function(e) {
                console.log("Error " + e.message);
            }
    );
}

function writeToFile(){
    //Write to File
    var fileW;
    tizen.filesystem.resolve("documents", function(dir) 
        {
           fileW = dir.resolve("myFDir3/myFile.txt");
           fileW.openStream( "w", function(fs) {
                 fs.write("test write");
                 fs.close();
                 console.log("Write Successful");
            }, function(e) {
                 console.log("Error " + e.message);
            }, "UTF-8");
        });
}

function appendToFile(){
     //Append to File
       var fileA;
       tizen.filesystem.resolve("documents", function(dir) 
           {
              fileA = dir.resolve("myFDir3/myFile.txt");
              fileA.openStream( "a", function(fs) {
                 fs.write(" and test write again");
                 fs.close();
                 console.log("Append Successful");
               }, function(e) {
                 console.log("Error " + e.message);
               }, "UTF-8");
           });
    }

function readFromFile(){
    // Read from file:
    var fileR;  
    tizen.filesystem.resolve("documents", function(dir) 
        {
           fileR = dir.resolve("myFDir3/myFile.txt");
           fileR.openStream("r", function(fs) {
                    var text = fs.read(fileR.fileSize);
                    fs.close();
                    console.log(text);
                }, function(e) {
                    console.log("Error " + e.message);
                }, "UTF-8");
        });
}
person Armaan-Ul-Islam    schedule 11.05.2017