示例#1
0
 function testReadWritePipe()
 {
     $original_value = file_get_contents(__DIR__ . DIRECTORY_SEPARATOR . 'Mock' . DIRECTORY_SEPARATOR . 'mockfile.txt');
     $file = new \qio\File(__DIR__ . DIRECTORY_SEPARATOR . 'Mock' . DIRECTORY_SEPARATOR . 'mockfile.txt');
     $file2 = new \qio\File(__DIR__ . DIRECTORY_SEPARATOR . 'Mock' . DIRECTORY_SEPARATOR . 'mockfile2.txt');
     $source = new \qio\File\Stream($file, \qio\Stream\Mode::Read);
     $target = new \qio\File\Stream($file2, \qio\Stream\Mode::ReadWriteTruncate);
     $reader = new \qio\File\Reader($source);
     $writer = new \qio\File\Writer($target);
     $source->open();
     $target->open();
     $reader->pipe($writer);
     $source->close();
     $target->close();
     $new_value = file_get_contents(__DIR__ . DIRECTORY_SEPARATOR . 'Mock' . DIRECTORY_SEPARATOR . 'mockfile2.txt');
     $this->assertEquals($original_value, $new_value);
 }
示例#2
0
文件: State.php 项目: jgswift/qio
 /**
  * Helper method to perform save sequence
  * @param string $path
  * @param string $target
  * @throws \InvalidArgumentException
  */
 protected function commit($path, $target = null)
 {
     if (is_array($path) && is_null($target)) {
         foreach ($path as $k => $v) {
             $this->commit($k, $v);
         }
         return;
     } elseif (!is_string($path) || !is_string($target)) {
         throw new \InvalidArgumentException();
     }
     $fileStream = new \qio\File\Stream($path);
     $fileReader = new \qio\File\Reader($fileStream);
     if (!$fileStream->open()) {
         return;
     }
     $cacheData = $fileReader->readAll();
     $fileStream->close();
     if (!empty(trim($cacheData))) {
         $fileStream = new \qio\File\Stream($target, \qio\Stream\Mode::ReadWriteTruncate);
         $fileWriter = new \qio\File\Writer($fileStream);
         if (!$fileStream->open()) {
             return;
         }
         $fileWriter->write($cacheData);
         $fileStream->close();
     }
 }