diff --git a/lib/files/view.php b/lib/files/view.php
index aaca1618acbfb673938ca40c61f0ceac702e2c8a..094a7d92a4d149a47be6f5d300472f4f17473d44 100644
--- a/lib/files/view.php
+++ b/lib/files/view.php
@@ -663,7 +663,7 @@ class View {
 		$path = \OC\Files\Filesystem::normalizePath($this->fakeRoot . '/' . $path);
 		/**
 		 * @var \OC\Files\Storage\Storage $storage
-		 * @var string $path
+		 * @var string $internalPath
 		 */
 		list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($path);
 		$cache = $storage->getCache();
@@ -700,7 +700,7 @@ class View {
 		$path = \OC\Files\Filesystem::normalizePath($this->fakeRoot . '/' . $directory);
 		/**
 		 * @var \OC\Files\Storage\Storage $storage
-		 * @var string $path
+		 * @var string $internalPath
 		 */
 		list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($path);
 		$cache = $storage->getCache();
@@ -737,4 +737,30 @@ class View {
 		usort($files, "fileCmp"); //TODO: remove this once ajax is merged
 		return $files;
 	}
+
+	/**
+	 * change file metadata
+	 *
+	 * @param string $path
+	 * @param array $data
+	 * @return int
+	 *
+	 * returns the fileid of the updated file
+	 */
+	public function putFileInfo($path, $data) {
+		$path = \OC\Files\Filesystem::normalizePath($this->fakeRoot . '/' . $path);
+		/**
+		 * @var \OC\Files\Storage\Storage $storage
+		 * @var string $internalPath
+		 */
+		list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($path);
+		$cache = $storage->getCache();
+
+		if (!$cache->inCache($internalPath)) {
+			$scanner = $storage->getScanner();
+			$scanner->scan($internalPath, \OC\Files\Cache\Scanner::SCAN_SHALLOW);
+		}
+
+		return $cache->put($internalPath, $data);
+	}
 }
diff --git a/tests/lib/files/view.php b/tests/lib/files/view.php
index adbed5a18b6236f9c56de57f0f8eb9ba8476f431..051ae2516272e0cf09ae687e74fdc23e95b3220c 100644
--- a/tests/lib/files/view.php
+++ b/tests/lib/files/view.php
@@ -72,6 +72,13 @@ class View extends \PHPUnit_Framework_TestCase {
 
 		$folderView = new \OC\Files\View('/folder');
 		$this->assertEquals($rootView->getFileInfo('/folder'), $folderView->getFileInfo('/'));
+
+		$cachedData = $rootView->getFileInfo('/foo.txt');
+		$this->assertFalse($cachedData['encrypted']);
+		$id = $rootView->putFileInfo('/foo.txt', array('encrypted' => true));
+		$cachedData = $rootView->getFileInfo('/foo.txt');
+		$this->assertTrue($cachedData['encrypted']);
+		$this->assertEquals($cachedData['fileid'], $id);
 	}
 
 	public function testAutoScan() {