Математика определенно не является одной из сильных сторон REBOL, поскольку в ней отсутствуют целые числа произвольной точности. Ради полноты я подумал, что все равно добавлю это.
Вот стандартная, наивная рекурсивная реализация:
fac: func [ [catch] n [integer!] ] [ if n < 0 [ throw make error! "Hey dummy, your argument was less than 0!" ] either n = 0 [ 1 ] [ n * fac (n - 1) ] ]
И это все. Двигайтесь, ребята, здесь нечего видеть ...:)
Предупреждение: я могу вас совершенно неправильно понять, но если все, что вам нужно, это файл журнала, зачем беспокоиться?
Поместите его в файл bat (измените путь к каталогу инструментов, а yourappname - это, конечно, имя вашего приложения):
cd "C:\devAndroid\Software\android-sdk-windows-1.6_r1\android-sdk-windows-1.6_r1\tools"
adb logcat -v time ActivityManager:W yourappname:D *:W >"C:\devAndroid\log\yourappname.log"
Затем в вашем коде просто сделайте что-то вроде этого:
Log.d("yourappname", "Your message");
Чтобы создать журнал, подключите USB-кабель и запустите файл bat.
С уважением
В общем, перед открытием потока у вас должен быть дескриптор файла. У вас есть дескриптор fileOutputStream перед createNewFile () в блоке else. Поток не создает файл, если он не существует.
Не совсем для Android, но для этой цели требуется много операций ввода-вывода. Что, если вы выполните много операций "записи" одну за другой? Вы будете читать все содержимое и записывать все содержимое, отнимая время и, что более важно, время автономной работы.
Я предлагаю использовать java.io.RandomAccessFile, seek () до конца, а затем writeChars (), чтобы добавить . Это будет намного чище и, вероятно, намного быстрее.
Вам следует взглянуть на microlog4android. У них есть готовое решение для входа в файл.