diff --git a/lib/private/Files/SimpleFS/SimpleFile.php b/lib/private/Files/SimpleFS/SimpleFile.php index e9bf0213d0..52b7819694 100644 --- a/lib/private/Files/SimpleFS/SimpleFile.php +++ b/lib/private/Files/SimpleFS/SimpleFile.php @@ -146,4 +146,15 @@ class SimpleFile implements ISimpleFile { public function getMimeType() { return $this->file->getMimeType(); } + + /** + * Open the file as stream, resulting resource can be operated as stream like the result from php's own fopen + * + * @return resource + * @throws \OCP\Files\NotPermittedException + * @since 14.0.0 + */ + public function fopen(string $mode) { + return $this->file->fopen($mode); + } } diff --git a/lib/public/Files/SimpleFS/ISimpleFile.php b/lib/public/Files/SimpleFS/ISimpleFile.php index cd092056cd..c417db6354 100644 --- a/lib/public/Files/SimpleFS/ISimpleFile.php +++ b/lib/public/Files/SimpleFS/ISimpleFile.php @@ -99,4 +99,13 @@ interface ISimpleFile { * @since 11.0.0 */ public function getMimeType(); + + /** + * Open the file as stream, resulting resource can be operated as stream like the result from php's own fopen + * + * @return resource + * @throws \OCP\Files\NotPermittedException + * @since 14.0.0 + */ + public function fopen(string $mode); } diff --git a/tests/lib/Files/SimpleFS/SimpleFileTest.php b/tests/lib/Files/SimpleFS/SimpleFileTest.php index ab4970804a..aec5052cb4 100644 --- a/tests/lib/Files/SimpleFS/SimpleFileTest.php +++ b/tests/lib/Files/SimpleFS/SimpleFileTest.php @@ -123,4 +123,12 @@ class SimpleFileTest extends \Test\TestCase { $this->simpleFile->getContent(); } + + public function testFopen() { + $this->file->expects($this->once()) + ->method('fopen') + ->with('r+'); + + $this->simpleFile->fopen('r+'); + } }