1
1
package com.xiasuhuei321.gank_kotlin.extension
2
2
3
- import android.os.Environment
4
3
import com.xiasuhuei321.gank_kotlin.GankApplication
5
4
import com.xiasuhuei321.gank_kotlin.context
6
5
import com.xiasuhuei321.gank_kotlin.datasource.bean.CacheValues
@@ -12,19 +11,117 @@ import java.io.*
12
11
*/
13
12
14
13
/* *
15
- * 序列化对象
14
+ * write cache file
16
15
*/
16
+ fun write2File (content : Any ){
17
+ write2File(CacheValues .DEFAULT_FILE_NAME ,content)
18
+ }
19
+
20
+ /* *
21
+ * write cache file with key
22
+ */
23
+
24
+ @Throws(IOException ::class )
25
+ fun write2File (fileName : String , content : Any ) {
26
+ val fos = FileOutputStream (File (GankApplication .context.filesDir , fileName))
27
+ val oos = ObjectOutputStream (fos)
28
+ oos.writeObject(content)
29
+ write2FileCount(fileName)
30
+ oos.close()
31
+ }
32
+
33
+ /* *
34
+ * read cache
35
+ */
36
+ fun readCacheFile ():Any? {
37
+ return readCacheFile(CacheValues .DEFAULT_FILE_NAME )
38
+ }
17
39
40
+ /* *
41
+ * read cache with key
42
+ *
43
+ */
18
44
@Throws(IOException ::class )
19
- fun <T > serialize (t : T ) {
45
+ fun readCacheFile (fileName : String ): Any? {
46
+ val file = File (GankApplication .context.filesDir,fileName)
47
+ if (! file.exists()){
48
+ file.createNewFile()
49
+ }
50
+ if (file.length() == 0L ){
51
+ return null
52
+ }
53
+ val fis = FileInputStream (file)
54
+ val ois = ObjectInputStream (fis)
55
+ val result = ois.readObject()
56
+ ois.close()
57
+ return result
58
+ }
59
+
60
+ /* *
61
+ * delete default cache
62
+ */
63
+ fun deleteCacheFile () : Boolean {
64
+ return deleteCacheFile(CacheValues .DEFAULT_FILE_NAME )
65
+ }
20
66
67
+ /* *
68
+ * delete all cache
69
+ */
70
+ fun deleteAllCacheFile (){
71
+ val list = readFileCount()
72
+ for (name in list){
73
+ deleteFile(name)
74
+ }
75
+ }
76
+
77
+ /* *
78
+ * delete cache with key
79
+ */
80
+ fun deleteCacheFile (fileName : String ):Boolean {
81
+ return when (deleteFile(fileName)){
82
+ true -> {
83
+ deleteFileCount(fileName)
84
+ true
85
+ }
86
+ false -> {
87
+ false
88
+ }
89
+ }
90
+
91
+ }
92
+
93
+ /* *
94
+ * delete cache count
95
+ */
96
+ private fun deleteFileCount (fileName : String ){
97
+ deleteFile(fileName)
21
98
}
22
99
100
+ /* *
101
+ * delete cache
102
+ */
103
+ private fun deleteFile (fileName : String ):Boolean {
104
+ val file = File (GankApplication .context.filesDir,fileName)
105
+ return file.exists() && file.delete()
106
+ }
23
107
108
+ /* *
109
+ * write count to cache
110
+ */
111
+ private fun write2FileCount (fileName : String ){
112
+ val local = readCacheFile(CacheValues .DEFAULT_FILE_COUNT )
113
+ if (local== null ){
114
+ write2File(CacheValues .DEFAULT_FILE_COUNT ,fileName)
115
+ }else {
116
+ val contents = readCacheFile(CacheValues .DEFAULT_FILE_COUNT ).toString()
117
+ write2File(CacheValues .DEFAULT_FILE_COUNT ,contents+ " ," + fileName)
118
+ }
119
+ }
24
120
25
121
/* *
26
- * 外部存储路径检查
122
+ * read count
27
123
*/
28
- fun checkDir ():Boolean {
29
- return Environment .getExternalStorageDirectory().equals( Environment . MEDIA_MOUNTED )
124
+ private fun readFileCount ():List < String > {
125
+ return readCacheFile( CacheValues . DEFAULT_FILE_COUNT ).toString().split( " , " )
30
126
}
127
+
0 commit comments