ファイルのコピーなど
Luaridaのプログラム内でファイルコピーやフォルダの作成を行いたいときがあるかもしれないので、ちょっと、作ってみました。ソースを載せておきます。
ファイルのコピー
os.execute()を使ってcatコマンドで吐き出しているだけです。toolboxにはcpコマンドが無いようです。(追記:ddコマンドがありました。これを使えばもっといろいろなことができますね。)
------------------------------------------ --ファイルコピー(/sdcard/luarida/以下に限る) ------------------------------------------ function filecopy( src, dest ) printscrl( "#filecopy "..LuaridaPath..src.." "..LuaridaPath..dest, 14, color(0,0,0),color(255,255,255) ) os.execute( "cat "..LuaridaPath..src.." > "..LuaridaPath..dest ) end
フォルダの作成
これも、os.execute()を使って、mkdirしているだけです。
------------------------------------------ --ディレクトリの作成(/sdcard/luarida/以下に限る) ------------------------------------------ function mkdir( src ) printscrl( "#mkdir "..LuaridaPath..src, 14, color(0,0,0),color(255,255,255) ) os.execute( "mkdir "..LuaridaPath..src ) end
フォルダ一覧
これも、os.execute()を使って、ls -lして、それを画面に表示しているだけです。
------------------------------------------ --ディレクトリの表示(/sdcard/luarida/以下に限る) ------------------------------------------ function dir( src ) local tmpFile = LuaridaPath.."files.tmp" --ファイル名を書き出すテンポラリファイル local str local fp, msg printscrl( "#ls -l '"..LuaridaPath..src.."'", 14, color(0,0,0),color(255,255,255) ) os.execute( "ls -l '"..LuaridaPath..src.."' > "..tmpFile ) --ファイルを開きます fp, msg = io.open( tmpFile, "r") if( not(fp) )then dialog( tmpFile.."がオープンできません", msg, 0 ) return end --内容を読みます while(true)do str = fp:read("*l") --1行読み込み if( str==nil )then break end --読込むデータが無ければ終了 str = string.gsub( str,"\r","" ) --改行コードを外す printscrl( str, 14, color(0,0,0),color(255,255,255) ) end io.close(fp) end
サンプルプログラム
上記関数を使ったfilecopy.luaというサンプルプログラムを記載しておきます。
------------------------------------------ --ファイルコピーサンプル ------------------------------------------ --関数宣言-------------------------------- main={} --mainメソッド printscrl={} --スクロールするテキスト表示 filecopy={} --ファイルコピー(/sdcard/luarida/以下に限る) mkdir={} --ディレクトリの作成(/sdcard/luarida/以下に限る) dir={} --ディレクトリの表示(/sdcard/luarida/以下に限る) --グローバル変数宣言---------------------- LuaridaPath="/sdcard/luarida/" --luaファイルを保存しているPath ------------------------------------------ mt={} mt.__newindex=function(mtt,mtn,mtv) dialog( "Error Message", "宣言していない変数 "..mtn.." に値を入れようとしています", 0 ) toast("画面タッチで実行を続けます", 1) touch(3) end mt.__index=function(mtt,mtn) dialog( "Error Message", "変数 "..mtn.." は宣言されていません", 0 ) toast("画面タッチで実行を続けます", 1) touch(3) end setmetatable(_G,mt) --------以下が実プログラム---------------- ------------------------------------------ --スクロールするテキスト表示 ------------------------------------------ function printscrl( str, fontsize, fcolor, bcolor ) local w,h = canvas.getviewSize() local sc --一度、見えないところにテキストを書いて、改行数を求める sc = canvas.drawTextBox( str, 0, h+1, fontsize, fcolor, w ) --画面の絵をワークエリアに取り込みます canvas.getg( 0, fontsize*sc, w-1, h-1, 0, fontsize*sc, w-1, h-1 ) --取り込んだ画面をスクロールさせて描きます canvas.putg( 0, 0, w-1, h-fontsize*sc-1, 0, fontsize*sc, w-1, h-1 ) --書き出す部分をバックカラーで塗り潰します canvas.drawRect( 0, h-fontsize*sc-1, w, h, bcolor, 1 ) --フラッシュします canvas.putflush() --スクロールしたところにテキストを書きます canvas.drawTextBox( str, 0, h-fontsize*sc, fontsize, fcolor, w ) end ------------------------------------------ --ファイルコピー(/sdcard/luarida/以下に限る) ------------------------------------------ function filecopy( src, dest ) printscrl( "#filecopy "..LuaridaPath..src.." "..LuaridaPath..dest, 14, color(0,0,0),color(255,255,255) ) os.execute( "cat "..LuaridaPath..src.." > "..LuaridaPath..dest ) end ------------------------------------------ --ディレクトリの作成(/sdcard/luarida/以下に限る) ------------------------------------------ function mkdir( src ) printscrl( "#mkdir "..LuaridaPath..src, 14, color(0,0,0),color(255,255,255) ) os.execute( "mkdir "..LuaridaPath..src ) end ------------------------------------------ --ディレクトリの表示(/sdcard/luarida/以下に限る) ------------------------------------------ function dir( src ) local tmpFile = LuaridaPath.."files.tmp" --ファイル名を書き出すテンポラリファイル local str local fp, msg printscrl( "#ls -l '"..LuaridaPath..src.."'", 14, color(0,0,0),color(255,255,255) ) os.execute( "ls -l '"..LuaridaPath..src.."' > "..tmpFile ) --ファイルを開きます fp, msg = io.open( tmpFile, "r") if( not(fp) )then dialog( tmpFile.."がオープンできません", msg, 0 ) return end --内容を読みます while(true)do str = fp:read("*l") --1行読み込み if( str==nil )then break end --読込むデータが無ければ終了 str = string.gsub( str,"\r","" ) --改行コードを外す printscrl( str, 14, color(0,0,0),color(255,255,255) ) end io.close(fp) end ------------------------------------------ --メインプログラム ------------------------------------------ function main() dir( "." ) mkdir( "tmp" ) filecopy( "filecopy.lua", "tmp/filecopy.lua" ) dir( "tmp" ) toast( "画面タッチで終了します", 0 ) touch(3) end main()