Skip to content

Commit 4ad2060

Browse files
committed
see 05/24 log
1 parent aed8e8a commit 4ad2060

File tree

1 file changed

+14
-30
lines changed

1 file changed

+14
-30
lines changed

utilcode/src/main/java/com/blankj/utilcode/util/CacheUtils.java

Lines changed: 14 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import java.io.ObjectOutputStream;
2525
import java.io.RandomAccessFile;
2626
import java.io.Serializable;
27+
import java.nio.MappedByteBuffer;
28+
import java.nio.channels.FileChannel;
2729
import java.util.Collections;
2830
import java.util.HashMap;
2931
import java.util.Locale;
@@ -192,20 +194,23 @@ public void put(String key, byte[] value, int saveTime) {
192194
public byte[] getBytes(String key) {
193195
File file = mCacheManager.getFile(key);
194196
if (!file.exists()) return null;
195-
RandomAccessFile raf = null;
197+
FileChannel fc = null;
196198
try {
197-
raf = new RandomAccessFile(file, "r");
198-
byte[] byteArray = new byte[(int) raf.length()];
199-
raf.read(byteArray);
200-
if (!CacheHelper.isDue(byteArray)) {
201-
return CacheHelper.getDataWithoutDueTime(byteArray);
199+
fc = new RandomAccessFile(file, "r").getChannel();
200+
MappedByteBuffer byteBuffer = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size()).load();
201+
byte[] data = new byte[(int) fc.size()];
202+
if (byteBuffer.remaining() > 0) {
203+
byteBuffer.get(data, 0, byteBuffer.remaining());
204+
}
205+
if (!CacheHelper.isDue(data)) {
206+
return CacheHelper.getDataWithoutDueTime(data);
202207
} else {
203208
mCacheManager.remove(key);
204209
}
205-
} catch (Exception e) {
210+
} catch (IOException e) {
206211
e.printStackTrace();
207212
} finally {
208-
CloseUtils.closeIO(raf);
213+
CloseUtils.closeIO(fc);
209214
}
210215
return null;
211216
}
@@ -242,28 +247,7 @@ public void put(String key, String value, int saveTime) {
242247
* @return String
243248
*/
244249
public String getString(String key) {
245-
File file = mCacheManager.getFile(key);
246-
if (!file.exists()) return null;
247-
BufferedReader br = null;
248-
try {
249-
br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
250-
StringBuilder sb = new StringBuilder();
251-
String line;
252-
while ((line = br.readLine()) != null) {
253-
sb.append(line).append(LINE_SEP);
254-
}
255-
String content = sb.toString();
256-
if (!CacheHelper.isDue(content)) {
257-
return CacheHelper.getDataWithoutDueTime(content);
258-
} else {
259-
mCacheManager.remove(key);
260-
}
261-
} catch (IOException e) {
262-
e.printStackTrace();
263-
} finally {
264-
CloseUtils.closeIO(br);
265-
}
266-
return null;
250+
return new String(getBytes(key));
267251
}
268252

269253
///////////////////////////////////////////////////////////////////////////

0 commit comments

Comments
 (0)