The typical process goes as first one exports a numerical matrix mat
Export["test.dat",mat,"Table"]
and then imports it back by using
Import["test.dat","Table"]
This is necessary, especially when the evaluation of mat is relatively time-consuming and the value of mat is expected to be used many times.
When mat is a 1-dimensional vector or 2-d matrix, one gets what s/he wants (what is imported is what exactly has been exported). However, to one's surprise, the procedure fails when mat is a 3-d matrix (of Depth 4) --- what imported becomes many strings.
It has been found that *.mat file may do the job. But, is there any way to make *.dat to do the job as well?

Import/Exportis a directive to ignore the extension. (the dat extension is so generic it is meaningless anyway) – george2079 Sep 17 '16 at 14:07