package com.ibeetl.admin.core.file;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import com.ibeetl.admin.core.util.PlatformException;
/**
 * 本地文件系统
 *
 * @author xiandafu
 */
class LocalFileItem extends PersistFileItem {
  String root = null;

  public LocalFileItem(String root) {
    this.root = root;
  }

  public OutputStream openOutpuStream() {
    File file = new File(root + File.separator + path);
    try {
      if (!file.exists()) {
        file.createNewFile();
      }
      FileOutputStream fos = new FileOutputStream(file);
      return fos;
    } catch (IOException e) {
      throw new PlatformException("Open stream error " + path);
    }
  }

  @Override
  public void copy(OutputStream os) {
    File file = new File(root + File.separator + path);
    FileInputStream input = null;
    try {
      input = new FileInputStream(file);
      byte[] buf = new byte[1024];
      int bytesRead;
      while ((bytesRead = input.read(buf)) > 0) {
        os.write(buf, 0, bytesRead);
      }

    } catch (Exception ex) {
      throw new PlatformException("下载文件失败" + ex);
    } finally {
      try {
        input.close();
        os.close();
      } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }

    if (path.startsWith("temp")) {
      this.delete();
    }
  }

  @Override
  public boolean delete() {
    File file = new File(root + File.separator + path);
    return file.delete();
  }
}
