56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
|  | package kha; | ||
|  | 
 | ||
|  | import haxe.io.Bytes; | ||
|  | import haxe.io.Path; | ||
|  | import haxe.Serializer; | ||
|  | import haxe.Unserializer; | ||
|  | import kha.Blob; | ||
|  | import kha.StorageFile; | ||
|  | import sys.io.File; | ||
|  | 
 | ||
|  | using StringTools; | ||
|  | 
 | ||
|  | class JavaStorageFile extends StorageFile { | ||
|  | 	var file: Path; | ||
|  | 
 | ||
|  | 	public function new(filename: String) { | ||
|  | 		this.file = new Path(filename); | ||
|  | 		// if (file.dir != null) Directory.CreateDirectory(file.dir); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	override public function read(): Blob { | ||
|  | 		try { | ||
|  | 			if (file == null) | ||
|  | 				return null; | ||
|  | 			if (File.getContent(file.toString()) == null) | ||
|  | 				return null; | ||
|  | 			return Blob.fromBytes(File.getBytes(file.toString())); | ||
|  | 		} | ||
|  | 		catch (e:Dynamic) { | ||
|  | 			return null; | ||
|  | 		} | ||
|  | 	} | ||
|  | 
 | ||
|  | 	override public function write(data: Blob): Void { | ||
|  | 		var file = File.write(file.toString(), true); | ||
|  | 		file.writeBytes(data.toBytes(), 0, data.toBytes().length); | ||
|  | 	} | ||
|  | } | ||
|  | 
 | ||
|  | class Storage { | ||
|  | 	public static function namedFile(name: String): StorageFile { | ||
|  | 		name = name.replace("<", "-("); | ||
|  | 		name = name.replace(">", ")-"); | ||
|  | 		name = name.replace(":", "_"); | ||
|  | 		name = name.replace("|", ")("); | ||
|  | 		name = name.replace("?", "(Q)"); | ||
|  | 		name = name.replace("*", "(+)"); | ||
|  | 		name = name.replace("\"", "''"); | ||
|  | 		return new JavaStorageFile(name); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public static function defaultFile(): StorageFile { | ||
|  | 		return namedFile("default.kha"); | ||
|  | 	} | ||
|  | } |