ive tested the above theory and works successfully with replication intact.
alter database REPTEST set restricted_user with rollback immediate;
ALTER DATABASE REPTEST SET OFFLINE;
ALTER DATABASE REPTEST
MODIFY FILE ( NAME = CMS, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\REPTEST\CMS.mdf' );
ALTER DATABASE REPTEST
MODIFY FILE ( NAME = CMS_log, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\REPTEST\CMS_log.ldf' );
-- Move the files at OS level
ALTER DATABASE REPTEST SET ONLINE;
alter database REPTEST set multi_user;