76 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| /*
 | |
| 文件名:IOClass.nut
 | |
| 路径:Dps_A/BaseClass/IOClass/IOClass.nut
 | |
| 创建日期:2024-09-19	14:13
 | |
| 文件用途:IO流类
 | |
| */
 | |
| class IO extends Base_C_Object {
 | |
|     _Fopen_Address = Module.getExportByName(null, "fopen");
 | |
|     _Fgetc_Address = Module.getExportByName(null, "fgetc");
 | |
|     _Fputc_Address = Module.getExportByName(null, "fputc");
 | |
|     _Fgets_Address = Module.getExportByName(null, "fgets");
 | |
|     _Fputs_Address = Module.getExportByName(null, "fputs");
 | |
|     _Fread_Address = Module.getExportByName(null, "fread");
 | |
|     _Fwrite_Address = Module.getExportByName(null, "fwrite");
 | |
|     _Fclose_Address = Module.getExportByName(null, "fclose");
 | |
|     _Fseek_Address = Module.getExportByName(null, "fseek");
 | |
|     _Ftell_Address = Module.getExportByName(null, "ftell");
 | |
|     _Rewind_Address = Module.getExportByName(null, "rewind");
 | |
| 
 | |
| 
 | |
| 
 | |
|     Pos = 0;
 | |
| 
 | |
|     constructor(FileName, Modes) {
 | |
|         local FileObj = Sq_CallFunc(_Fopen_Address, "pointer", ["pointer", "pointer"], Str_Ptr(FileName), Str_Ptr(Modes));
 | |
|         if (FileObj) {
 | |
|             base.constructor(FileObj);
 | |
|         } else error("文件打开错误!  FileName: " + FileName);
 | |
|     }
 | |
| 
 | |
|     //读取一行
 | |
|     function ReadLine() {
 | |
|         local Buffer = Memory.alloc(256);
 | |
|         local RetFlag = Sq_CallFunc(_Fgets_Address, "pointer", ["pointer", "int", "pointer"], Buffer.C_Object, 256, this.C_Object);
 | |
|         if (RetFlag)
 | |
|             return Buffer.readUtf8String();
 | |
|     }
 | |
| 
 | |
|     //读取一个
 | |
|     function Read() {
 | |
|         local RetFlag = Sq_CallFunc(_Fgetc_Address, "char", ["pointer"], this.C_Object);
 | |
|         if (RetFlag) {
 | |
|             return RetFlag;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     //读取指定大小
 | |
|     function ReadBuffer(size) {
 | |
|         local Buffer = Memory.alloc(size);
 | |
|         local RetFlag = Sq_CallFunc(_Fread_Address, "int", ["pointer", "int", "int", "pointer"], Buffer.C_Object, 1, size, this.C_Object);
 | |
|         if (RetFlag > 0) {
 | |
|             return {
 | |
|                 count = RetFlag,
 | |
|                 str = Buffer.readUtf8String(RetFlag)
 | |
|             };
 | |
|         } else {
 | |
|             return {
 | |
|                 count = 0,
 | |
|                 str = ""
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
| 
 | |
|     //写入字符串
 | |
|     function Write(Str) {
 | |
|         local Buffer = Memory.allocUtf8String(Str);
 | |
|         Sq_CallFunc(_Fputs_Address, "int", ["pointer", "pointer"], Buffer.C_Object, this.C_Object);
 | |
|     }
 | |
| 
 | |
| 
 | |
|     //关闭文件
 | |
|     function Close() {
 | |
|         Sq_CallFunc(_Fclose_Address, "pointer", ["pointer"], this.C_Object);
 | |
|     }
 | |
| } |