diff --git a/lib/internal/Magento/Framework/Filesystem/Io/File.php b/lib/internal/Magento/Framework/Filesystem/Io/File.php index 2e81325c8ec57..70608194b726b 100644 --- a/lib/internal/Magento/Framework/Filesystem/Io/File.php +++ b/lib/internal/Magento/Framework/Filesystem/Io/File.php @@ -440,11 +440,16 @@ public function cd($dir) */ public function read($filename, $dest = null) { + $result = false; + $this->_cwd(); - if ($dest !== null) { - $result = @copy($filename, $dest); - } else { + if ($dest === null) { $result = @file_get_contents($filename); + } elseif (is_resource($dest)) { + $result = @file_get_contents($filename); + fwrite($dest, $result); + } elseif (is_string($dest)) { + $result = @copy($filename, $dest); } $this->_iwd(); diff --git a/lib/internal/Magento/Framework/Filesystem/Test/Unit/Io/FileTest.php b/lib/internal/Magento/Framework/Filesystem/Test/Unit/Io/FileTest.php new file mode 100644 index 0000000000000..0ec3f34a0972d --- /dev/null +++ b/lib/internal/Magento/Framework/Filesystem/Test/Unit/Io/FileTest.php @@ -0,0 +1,43 @@ +getTmpDir(); + \file_put_contents("{$tmpDir}/{$sourceFileName}", $content); + + $file = new File(); + $targetFileName = "target-file.txt"; + $targetFileHandle = \fopen("{$tmpDir}/{$targetFileName}", 'w'); + $file->cd($tmpDir); + $file->read($sourceFileName, $targetFileHandle); + + $targetContent = file_get_contents("{$tmpDir}/{$targetFileName}"); + $this->assertEquals($content, $targetContent); + } +}