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; 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
} 
 |