main.lua 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. PROJECT = "io"
  2. VERSION = "1.0.0"
  3. log.info("main", PROJECT, VERSION)
  4. _G.sys = require("sys")
  5. if wdt then
  6. --添加硬狗防止程序卡死,在支持的设备上启用这个功能
  7. wdt.init(9000)--初始化watchdog设置为9s
  8. sys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
  9. end
  10. local function io_test()
  11. -- Lua IO 操作测试 Demo
  12. log.info("io_test", "开始测试IO模块功能")
  13. -- 1. 测试文件存在性检查
  14. local testFile = "/test_io_demo.txt"
  15. if io.exists(testFile) then
  16. log.info("io_test", "测试文件已存在,将被删除")
  17. os.remove(testFile)
  18. end
  19. -- 2. 测试文件写入
  20. local writeSuccess = io.writeFile(testFile, "这是第一行数据1\n第二行数据12\n第三行数据123")
  21. if writeSuccess then
  22. log.info("io_test", "文件写入成功")
  23. else
  24. log.error("io_test", "文件写入失败")
  25. return
  26. end
  27. -- 3. 测试文件存在性检查
  28. log.info("io_test", "文件存在检查:", io.exists(testFile))
  29. -- 4. 测试获取文件大小
  30. local fileSize = io.fileSize(testFile)
  31. log.info("io_test", "文件大小:", fileSize)
  32. -- 5. 测试读取整个文件
  33. local fileContent = io.readFile(testFile)
  34. log.info("io_test", "文件内容:", fileContent)
  35. -- 6. 测试部分读取文件
  36. local partialContent = io.readFile(testFile, "rb", 10, 5)
  37. log.info("io_test", "部分文件内容(偏移10,长度5):", partialContent)
  38. -- 7. 测试文件操作API
  39. local fd = io.open(testFile, "rb")
  40. if fd then
  41. log.info("io_test", "文件打开成功")
  42. -- 测试读取
  43. local firstLine = fd:read("*l")
  44. log.info("io_test", "第一行内容:", firstLine)
  45. -- 测试seek
  46. -- fd:seek("set", 1024)
  47. local first5Bytes = fd:read(5)
  48. log.info("io_test", "前5字节:", first5Bytes)
  49. -- 测试写入(需要重新以写入模式打开)
  50. fd:close()
  51. fd = io.open(testFile, "ab")
  52. if fd then
  53. fd:write("\n追加的数据")
  54. fd:close()
  55. log.info("io_test", "数据追加成功")
  56. end
  57. end
  58. -- 8. 测试目录操作
  59. local testDir = "/test_dir"
  60. log.info("io_test", "创建目录:", io.mkdir(testDir))
  61. sys.wait(1000)
  62. local ret, data = io.lsdir(testDir)
  63. if ret then
  64. log.info("io_test", "目标目录存在", json.encode(data))
  65. end
  66. -- 在目录中创建几个测试文件
  67. io.writeFile(testDir.."/file1.txt", "测试文件1")
  68. io.writeFile(testDir.."/file2.txt", "测试文件2")
  69. io.writeFile(testDir.."/file3.txt", "测试文件3")
  70. -- 9. 测试列出目录
  71. local success, dirList = io.lsdir(testDir, 10, 0)
  72. if success then
  73. log.info("io_test", "目录列表:", json.encode(dirList))
  74. else
  75. log.error("io_test", "获取目录列表失败:", dirList)
  76. end
  77. -- 10. 测试挂载点列表
  78. local mountPoints = io.lsmount()
  79. log.info("io_test", "挂载点列表:", json.encode(mountPoints))
  80. -- 11. 测试删除目录
  81. log.info("io_test","删除目录前先删除目录下的文件,否则非空目录删除会失败")
  82. log.info("io_test","删除测试文件1",os.remove(testDir.."/file1.txt"))
  83. log.info("io_test","删除测试文件2",os.remove(testDir.."/file2.txt"))
  84. log.info("io_test","删除测试文件3",os.remove(testDir.."/file3.txt"))
  85. log.info("io_test", "删除目录:", io.rmdir(testDir))
  86. local ret, data = io.lsdir(testDir)
  87. if ret then
  88. log.info("io_test", "目录删除后存在:", json.encode(data))
  89. else
  90. log.info("io_test", "目录删除后不存在")
  91. end
  92. -- 12. 测试文件系统格式化(通常不执行,因为会清空数据)
  93. --[[
  94. local formatOk, err = io.mkfs("/sd")
  95. log.info("io_test", "格式化文件系统:", formatOk, err)
  96. ]]
  97. -- 清理测试文件
  98. os.remove(testFile)
  99. log.info("io_test", "测试完成,已清理测试文件")
  100. end
  101. sys.taskInit(io_test)
  102. -- 用户代码已结束---------------------------------------------
  103. -- 结尾总是这一句
  104. sys.run()
  105. -- sys.run()之后后面不要加任何语句!!!!!