In recent years, reliability has become one critical issue in the designs of flashmemory file/storage systems, due to he growing unreliability of advanced flashmemory chips. In this paper, a version-based design is proposed to effectively and efficiently maintain the consistency among page versions of a file for potential recovery needs. In articular, a two-version one for a native file system is presented with the minimal overheads in version maintenance. A recovery scheme is then presented to restore a corrupted file back to the latest consistent version. The design is later extended to maintain multiple data versions with the considerations of the write constraints of multi-level-cell flash memory. It was shown that the proposed strategy could significantly improve the reliability of flash memory with limited management and space overheads.