Page created:
Jun 17, 2009 (? ago)
Last modified ? ago
To main page | Opera Unite HowTo's

file_wrap.js - File Wrapper


This is a simple (safe) wrapper for file reading and writing, just like file_get_contents and file_put_contents in PHP:

file_wrap.js

/* 
   ver. 0.0001alpha 
   http://unitehowto.com
   BSD license 
*/

function safe_file_get(fn, otherwise) {
	try {
		var dir = opera.io.filesystem.mountSystemDirectory('storage');
		var txt = '';
		stream = dir.open(dir.resolve('/storage/'+fn),
			opera.io.filemode.READ);
		if (stream) {
			var bytes=stream.read( stream.bytesAvailable );
			stream.close();
			return bytes;
		};
		return txt;
	} catch(err) { // message: FILE_NOT_FOUND_ERR
		return otherwise;
	};
};

function safe_file_put(fn, txt) {
	try {
		var dir = opera.io.filesystem.mountSystemDirectory('storage');
		var stream = dir.open('/storage/'+fn, opera.io.filemode.WRITE);
		stream.write(txt);
		stream.close();
		return 1;
	} catch(err) { // message: FILE_NOT_FOUND_ERR
		return 0;
	};
};

How to use it

var file_contents = safe_file_get('filename.txt', 'default');
This will read contents of to /storage/filename.txt file.
'default' is the default value that will return if file was not found or something went wrong (some error happened).
var res = safe_file_put('filename.txt', 'This is great!')
This will write This is great! string to /storage/filename.txt

Minimum config.xml

This requires fileio library, so:
<widget>
  <widgetname>Test1</widgetname>
  <feature name="http://xmlns.opera.com/fileio">
  </feature>
  <feature name="http://xmlns.opera.com/webserver">
    <param name="type" value="service"/>
    <param name="servicepath" value="test"/>
  </feature>
</widget>

Thanks

Thanks to Simon Houston for fixing locking.

Slava V. [about me]


main page



Last updated


  1. Markuper (HTML templates)
  2. .ua
  3. Opera Unite HowTo's
  4. .us (files)
  5. Distribute Your Application
  6. 24/7 sites (permanent applications - idea) [stub]
  7. Issues
  8. HTTP Connections (AJAX/REST)
  9. Cookies
  10. file_wrap.js - File Wrapper
  11. Basic HowTo: Simple app (tutorial)
  12. Static images, client-side scripts
  13. Application Examples
  14. How to Debug Opera Unite apps
  15. Persistence & databases
  16. Opera Unite benchmark
  17. From PHP to Opera Unite
  18. Uniteness (Framework)
  19. Config.xml
  20. Key-value storage
  21. Widget Object
  22. Notifications (Growl'esque)
  23. Reset (debug)
  24. Cron example
  25. What I meant by CNAMEs
  26. Wish List
  27. Device Unavailable
  28. StopLorem (Opera Unite blogging)
  29. uniteness-0.11
  30. GET/POST data
  31. CRUD And Static (example)
  32. Opera object
  33. URLs
  34. Headers & Redirects
  35. Error Console
  36. JSON State (storing data)
  37. Security
  38. /storage/ (in fileio)
  39. Yusef library
  40. unite_info (a-la php_info)
  41. Javascript Imports
  42. onunload / _close
  43. fileio: Sandboxed Filesystem
  44. Request Hierarchy (like php_info)
  45. Intro: Web Apps with Opera Unite