From a43733cb97276fe599daeda3850f463a6cfb157c Mon Sep 17 00:00:00 2001 From: skipify Date: Fri, 15 Jul 2022 09:19:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=BD=BF=E7=94=A8=E5=AE=8C?= =?UTF-8?q?=E6=AF=95=E5=90=8E=E5=85=B3=E9=97=AD=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- binding/java/ReadMe.md | 4 ++++ .../src/main/java/org/lionsoul/ip2region/xdb/Searcher.java | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/binding/java/ReadMe.md b/binding/java/ReadMe.md index f6e06f7..bab114f 100644 --- a/binding/java/ReadMe.md +++ b/binding/java/ReadMe.md @@ -35,6 +35,8 @@ public class SearcherTest { String ip = "1.2.3.4"; long sTime = System.nanoTime(); String region = searcher.search(ip); + //一定关闭 + searcher.close(); long cost = TimeUnit.NANOSECONDS.toMicros((long) (System.nanoTime() - sTime)); System.out.printf("{region: %s, ioCount: %d, took: %d μs}\n", region, searcher.getIOCount(), cost); } catch (Exception e) { @@ -81,6 +83,7 @@ public class SearcherTest { String ip = "1.2.3.4"; long sTime = System.nanoTime(); String region = searcher.search(ip); + searcher.close(); long cost = TimeUnit.NANOSECONDS.toMicros((long) (System.nanoTime() - sTime)); System.out.printf("{region: %s, ioCount: %d, took: %d μs}\n", region, searcher.getIOCount(), cost); } catch (Exception e) { @@ -127,6 +130,7 @@ public class SearcherTest { String ip = "1.2.3.4"; long sTime = System.nanoTime(); String region = searcher.search(ip); + //此处可以不调用 searcher.close() 因为使用了newWithBuffer没有打开文件 long cost = TimeUnit.NANOSECONDS.toMicros((long) (System.nanoTime() - sTime)); System.out.printf("{region: %s, ioCount: %d, took: %d μs}\n", region, searcher.getIOCount(), cost); } catch (Exception e) { diff --git a/binding/java/src/main/java/org/lionsoul/ip2region/xdb/Searcher.java b/binding/java/src/main/java/org/lionsoul/ip2region/xdb/Searcher.java index 5aecbc8..1e01bd8 100644 --- a/binding/java/src/main/java/org/lionsoul/ip2region/xdb/Searcher.java +++ b/binding/java/src/main/java/org/lionsoul/ip2region/xdb/Searcher.java @@ -163,6 +163,7 @@ public class Searcher { handle.seek(0); final byte[] buff = new byte[HeaderInfoLength]; handle.read(buff); + handle.close(); return new Header(buff); } @@ -177,8 +178,10 @@ public class Searcher { final byte[] buff = new byte[len]; int rLen = handle.read(buff); if (rLen != len) { + handle.close(); throw new IOException("incomplete read: read bytes should be " + len); } + handle.close(); return buff; } @@ -193,9 +196,10 @@ public class Searcher { final byte[] buff = new byte[(int) handle.length()]; int rLen = handle.read(buff); if (rLen != buff.length) { + handle.close(); throw new IOException("incomplete read: read bytes should be " + buff.length); } - + handle.close(); return buff; }