| package com.doumee.lib_coremodel.util.luban; | 
|   | 
| import java.io.IOException; | 
| import java.io.InputStream; | 
|   | 
| /** | 
|  * Automatically close the previous InputStream when opening a new InputStream, | 
|  * and finally need to manually call {@link #close()} to release the resource. | 
|  */ | 
| public abstract class InputStreamAdapter implements InputStreamProvider { | 
|   | 
|   private InputStream inputStream; | 
|   | 
|   @Override | 
|   public InputStream open() throws IOException { | 
|     close(); | 
|     inputStream = openInternal(); | 
|     return inputStream; | 
|   } | 
|   | 
|   public abstract InputStream openInternal() throws IOException; | 
|   | 
|   @Override | 
|   public void close() { | 
|     if (inputStream != null) { | 
|       try { | 
|         inputStream.close(); | 
|       } catch (IOException ignore) { | 
|       }finally { | 
|         inputStream = null; | 
|       } | 
|     } | 
|   } | 
| } |