diff --git a/src/Lunr/Gravity/Filesystem/PhysicalFilesystemAccessObject.php b/src/Lunr/Gravity/Filesystem/PhysicalFilesystemAccessObject.php
index 1599da4fe9520c93d21161ac0fcec211cd111dce..7867aa18254cb8206acf77c98e094f88d4f014ec 100644
--- a/src/Lunr/Gravity/Filesystem/PhysicalFilesystemAccessObject.php
+++ b/src/Lunr/Gravity/Filesystem/PhysicalFilesystemAccessObject.php
@@ -316,6 +316,40 @@ class PhysicalFilesystemAccessObject implements DataAccessObjectInterface, Files
         }
     }
 
+    /**
+     * Turns the values of an array into csv and writes them in a given file.
+     *
+     * @param  String $file      The filepath to write the file
+     * @param  Array $data       An array with the data to be turned into csv
+     * @param  String $delimiter The delimiter for the csv (optional)
+     * @param  String $enclosure The enclosure for the csv (option)
+     *
+     * @return Boolean TRUE when file is created and FALSE in failure.
+     */
+    public function put_csv_file_content($file, $data, $delimiter = ',', $enclosure = '"')
+    {
+        $fp = fopen($file, 'w');
+
+        if($fp === FALSE)
+        {
+            $this->logger->warning('Could not open the file: ' . $file);
+            return FALSE;
+        }
+
+        foreach ($data as $fields)
+        {
+            if(fputcsv($fp, $fields) === FALSE)
+            {
+                $this->logger->warning('Could not comma separate the values: ' . json_encode($fields));
+                return FALSE;
+            }
+        }
+
+        fclose($fp);
+
+        return TRUE;
+    }
+
 }
 
 ?>
diff --git a/src/Lunr/Gravity/Filesystem/Tests/PhysicalFilesystemAccessObjectCSVTest.php b/src/Lunr/Gravity/Filesystem/Tests/PhysicalFilesystemAccessObjectCSVTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..320d208a00b8798d54427ec0f17200061ffc7f0d
--- /dev/null
+++ b/src/Lunr/Gravity/Filesystem/Tests/PhysicalFilesystemAccessObjectCSVTest.php
@@ -0,0 +1,89 @@
+<?php
+
+/**
+ * This file contains the PhysicalFilesystemAccessObjectCSVTest class.
+ *
+ * PHP Version 5.4
+ *
+ * @category   Filesystem
+ * @package    Gravity
+ * @subpackage Filesystem
+ * @author     Dinos Theodorou <dinos@m2mobi.com>
+ * @copyright  2013-2014, M2Mobi BV, Amsterdam, The Netherlands
+ * @license    http://lunr.nl/LICENSE MIT License
+ */
+
+namespace Lunr\Gravity\Filesystem\Tests;
+
+use Lunr\Gravity\Filesystem\PhysicalFilesystemAccessObject;
+
+/**
+ * This class contains tests for the put_csv_file_content method in the PhysicalFilesystemAccessObject.
+ *
+ * @category   Filesystem
+ * @package    Gravity
+ * @subpackage Filesystem
+ * @author     Dinos Theodorou <dinos@m2mobi.com>
+ * @covers     Lunr\Gravity\Filesystem\PhysicalFilesystemAccessObject
+ */
+class PhysicalFilesystemAccessObjectCSVTest extends PhysicalFilesystemAccessObjectTest
+{
+
+    /**
+     * Test that put_csv_file_content() logs a warning when cannot open the given file.
+     *
+     * @covers Lunr\Gravity\Filesystem\PhysicalFilesystemAccessObject::put_csv_file_content
+     */
+    public function testPutCSVFileContentCannotOpenFile()
+    {
+        $this->mock_function('fopen', 'return FALSE;');
+
+        $this->logger->expects($this->once())
+             ->method('warning')
+             ->with($this->equalTo('Could not open the file: filepath'));
+
+        $this->assertFalse($this->class->put_csv_file_content('filepath', [['value1', 'value2']]));
+
+        $this->unmock_function('fopen');
+    }
+
+    /**
+     * Test that put_csv_file_content() logs a warning when cannot open the given file.
+     *
+     * @covers Lunr\Gravity\Filesystem\PhysicalFilesystemAccessObject::put_csv_file_content
+     */
+    public function testPutCSVFileContentFailedToCSV()
+    {
+        $filepath = TEST_STATICS . '/Gravity/folder2/test.csv';
+
+        $this->mock_function('fputcsv', 'return FALSE;');
+
+        $this->logger->expects($this->once())
+             ->method('warning')
+             ->with($this->equalTo('Could not comma separate the values: ' . json_encode(['value1', 'value2'])));
+
+        $this->assertFalse($this->class->put_csv_file_content($filepath, [['value1', 'value2']]));
+
+        $this->unmock_function('fputcsv');
+
+        unlink($filepath);
+    }
+
+    /**
+     * Test that put_csv_file_content() returns TRUE in success.
+     *
+     * @covers Lunr\Gravity\Filesystem\PhysicalFilesystemAccessObject::put_csv_file_content
+     */
+    public function testPutCSVFileContentSuccess()
+    {
+        $filepath = TEST_STATICS . '/Gravity/folder2/test.csv';
+
+        $this->assertTrue($this->class->put_csv_file_content($filepath, [['value1', 'value2']]));
+        $this->assertStringMatchesFormatFile($filepath, "value1,value2\n");
+
+        unlink($filepath);
+    }
+
+}
+
+?>
diff --git a/tests/phpunit.xml b/tests/phpunit.xml
index 5926f1e6facaf8bb1b63201b314450886ca63e29..595d75939c0875b7bdcc51d28e9aadd562d6197c 100644
--- a/tests/phpunit.xml
+++ b/tests/phpunit.xml
@@ -158,6 +158,7 @@
             <file>src/Lunr/Gravity/Filesystem/Tests/PhysicalFilesystemAccessObjectDirectoryTest.php</file>
             <file>src/Lunr/Gravity/Filesystem/Tests/PhysicalFilesystemAccessObjectFindTest.php</file>
             <file>src/Lunr/Gravity/Filesystem/Tests/PhysicalFilesystemRemoveDirectoryTest.php</file>
+            <file>src/Lunr/Gravity/Filesystem/Tests/PhysicalFilesystemAccessObjectCSVTest.php</file>
         </testsuite>
         <testsuite name="L10n">
             <file>tests/system/EnvironmentTest.php</file>
