Creating a file object from a file already in public:// (drupal 7)
I think the easiest way would be to create a file object manually, populate it with the file details, and save it using file_save():

global $user;
$uri = 'public://path/to/file.txt';
$filename = 'file.txt';

$file = new stdClass;
$file-&gt;uid = $user-&gt;uid;
$file-&gt;filename = $filename;
$file-&gt;uri = $uri;
$file-&gt;filemime = 'text/plain';
$file-&gt;filesize = filesize($uri);
$file-&gt;status = 1;

file_save($file);


After you've done that you'll probably also want to use the file_usage_add() function to declare a vested interest in the file, so that it doesn't get deleted by any other system process:

$type = 'some_type'; // A string used by your module to identify this type of file entry
$id = 'some_id'; // An identifier used by your module to identify this particular file    

file_usage_add($file, 'MYMODULE', $type, $id);