Transfer particle cache from one file to another
I was investigating this recently and had to resort to reading the source code to figure this out (blender/source/blender/blenkernel/intern/pointcache.c and ptcache_filename()).  I was never able to find any documentation for the various idiosyncrasies.

When you create a Disk cache the files end up being named in the pattern %s_%06d_%02d.bphys.  The %s is a prefix; the %06d is a frame number;  and the final %02d is the index number.  For example: 537068657265_000231_00.bphys .  It turns out that 537068657265 is what happens when you convert the ASCII for "Sphere" to hexadecimal.  

However, if you double-click on the item in the list of caches and give it a name that will be used as the prefix on the filename instead.  The fact that this defaults to blank makes it easy to overlook the fact that you can give the cache a name instead of using the hex-encoded name of the object the particle system lives on.

It is possible to use these files as an External cache, but it takes an extra step.  You provide the directory containing the files as the File Path, then you have to rename the cache item in the list above it to match the prefix of the files (for example 537068657265) .  If you do not rename the cache item from the default blank then it will look for files named like _000231_00.bphys (a blank prefix) and since they do not exist you get the No valid data to read! error message.



Alternately, you can rename all the files to have a blank prefix using a shell script like

for i in *.bphys; do 
    o=${i#537068657265}
    mv $i $o
done