public static void main(String[] args) { try { DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); ; Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@192.168.117.110:1521:WFZF", "qzkj", "qzkj"); conn.setAutoCommit(false); ; BLOB blob = null; PreparedStatement pstmt = conn.prepareStatement("insert into sys_file(uuid,content,name) values(?,empty_blob(),?)"); String uuid = Tool.getStringUUid(); pstmt.setString(1, uuid); pstmt.setString(2, "test.flv"); pstmt.executeUpdate(); pstmt.close(); pstmt = conn.prepareStatement("select content from sys_file where uuid= ? for update"); pstmt.setString(1, uuid); ResultSet rset = pstmt.executeQuery(); ; if (rset.next()) blob = (BLOB) rset.getBlob(1); ; String fileName = "test.flv"; File f = new File( "C://Documents and Settings//Administrator//桌面//FlvPlayer201002//FlvPlayer201002//" + fileName); FileInputStream fin = new FileInputStream(f); ; System.out.println("file size = " + fin.available()); pstmt = conn.prepareStatement("update sys_file set content=? where uuid=?"); ; OutputStream out = blob.getBinaryOutputStream(); ; int count = -1, total = 0; byte[] data = new byte[(int) fin.available()]; fin.read(data); ; out.write(data); ; /* byte[] data = new byte[blob.getBufferSize();]; 另一种实现方法,节省内存 while ((count = fin.read(data);); != -1); { total += count; out.write(data, 0, count);; } */ fin.close(); ; out.close(); ; pstmt.setBlob(1, blob); ; pstmt.setString(2, uuid); pstmt.executeUpdate(); ; pstmt.close(); ; conn.commit(); ; conn.close(); ; } catch (SQLException e) { System.err.println(e.getMessage()); ; e.printStackTrace(); } catch (IOException e) { System.err.println(e.getMessage()); ; } }
public boolean parserCpYieldTxt(File txtFile) throws Exception { FileInputStream fIn = null; String fileNameUid = ""; try { Calendar calendar = Calendar.getInstance(); SimpleDateFormat df2 = new SimpleDateFormat("yyyyMM"); // Using Find Target "|=124" or ",=44" Count DateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH); logger.debug( "File " + txtFile.getAbsolutePath() + " " + txtFile.getName() + " " + new MimetypesFileTypeMap().getContentType(txtFile)); // 1.0 讀入檔案, 建立資料流 fIn = new FileInputStream(txtFile); // FileInputStream fIn2 = new FileInputStream(csvFile); InputStreamReader isr = null; BufferedReader br = null; isr = new InputStreamReader(fIn, "UTF-8"); br = new BufferedReader(isr); // byte[] byteArray = new byte[new Long(csvFile.length()).intValue()]; // 讀入File Data Byte..... // fIn2.read(byteArray); logger.debug(txtFile.getName() + "<--讀入資料檔...成功"); // Using get sign "\n" 抓行數... // 1.1 讀入行數資料, 略過行數 int l = -1; List<String> lineDataList = new ArrayList<String>(); for (int i = 0; i <= l; i++) { br.readLine(); } while (br.ready()) { String line = br.readLine(); line = null != line ? line : ""; // logger.debug(line); if (!line.trim().equals("")) { lineDataList.add(line); } } // 1.2 確認有資料開使處理 if (lineDataList != null) { CpYieldParserDao cpYieldParserDao = new CpYieldParserDao(); CpYieldLotTo cpYieldLotTo = new CpYieldLotTo(); String cpYieldUuid = UUID.randomUUID().toString().toUpperCase(); logger.debug("lineDataList.size() " + lineDataList.size()); fileNameUid = FilenameUtils.getBaseName(txtFile.getName()) + "_" + cpYieldUuid + "." + FilenameUtils.getExtension(txtFile.getName()); File bkFolder = new File(fileOutUrl + File.separator + df2.format(calendar.getTime()).toString()); bkFolder.mkdir(); File bkFile = new File(bkFolder.getPath().toString() + File.separator + fileNameUid); // 1.2.1 處理每行資料 String tmpWaferID = lineDataList.get(1); String arrayWafer[] = tmpWaferID.split("=")[1].trim().split("-"); // logger.debug("arrayWafer[] " + arrayWafer.length); // 1.3 Prepare Data String cpLot = arrayWafer[0].trim(); String waferId = arrayWafer[1].trim(); String machineId = arrayWafer[2].trim(); Integer cpTestTimes = cpYieldParserDao.getMaxCpTestTimes(cpLot, waferId); String xMaxCoor = lineDataList.get(2).split("=")[1].trim(); String yMaxCoor = lineDataList.get(3).split("=")[1].trim(); String flat = lineDataList.get(4).split("=")[1].trim(); logger.debug("xMaxCoor " + xMaxCoor); logger.debug("yMaxCoor " + yMaxCoor); logger.debug("flat " + flat); // 1.3 Find Bin Data int sb = 0, eb = 0; for (int i = 0; i < lineDataList.size(); i++) { if (lineDataList.get(i).indexOf("Wafer Bin Summary") >= 0) { sb = i + 1; break; } } for (int i = sb; i < lineDataList.size(); i++) { if (lineDataList.get(i).indexOf("bin") < 0) { eb = i - 1; break; } } logger.debug("sb " + sb); logger.debug(lineDataList.get(sb).trim()); logger.debug("eb " + eb); logger.debug(lineDataList.get(eb).trim()); // 1.3.1 Get Bin Data List<CpYieldLotBinTo> cpYieldLotBins = new ArrayList<CpYieldLotBinTo>(); String cpYieldBinUuid; String bin; Integer die; String percentage; String binString; for (int j = sb; j <= eb; j++) { cpYieldBinUuid = UUID.randomUUID().toString().toUpperCase(); CpYieldLotBinTo cpYieldLotBinTo = new CpYieldLotBinTo(); cpYieldLotBinTo.setCpYieldBinUuid(cpYieldBinUuid); cpYieldLotBinTo.setCpYieldUuid(cpYieldUuid); binString = lineDataList.get(j).trim(); binString = binString.replaceAll("bin", "").trim(); // Get Bin bin = binString.substring(0, binString.indexOf(" ")); logger.debug("bin " + bin); // Get Die bin = binString.substring(0, binString.indexOf(" ")); binString = binString.replaceAll(bin, "").trim(); die = Integer.parseInt(binString.substring(0, binString.indexOf(" "))); logger.debug("die " + die); // Get Percentage binString = binString.replaceAll(die.toString(), "").trim(); percentage = binString.substring(0, binString.length() - 1); logger.debug("percentage " + percentage); cpYieldLotBinTo.setBin(bin); cpYieldLotBinTo.setDie(die); cpYieldLotBinTo.setPercentage(percentage); cpYieldLotBins.add(cpYieldLotBinTo); } // 1.4 Die Data Integer passDie; Integer failDie; Integer totelDie; for (int i = eb + 1; i < lineDataList.size(); i++) { // pass die if (lineDataList.get(i).trim().indexOf("pass die") >= 0) { passDie = Integer.parseInt(lineDataList.get(i).trim().split(":")[1].trim()); logger.debug("passDie " + passDie); cpYieldLotTo.setPassDie(passDie); continue; } // fail die if (lineDataList.get(i).trim().indexOf("fail die") >= 0) { failDie = Integer.parseInt(lineDataList.get(i).trim().split(":")[1].trim()); logger.debug("failDie " + failDie); cpYieldLotTo.setFailDie(failDie); continue; } // totel die if (lineDataList.get(i).trim().indexOf("totel die") >= 0) { totelDie = Integer.parseInt(lineDataList.get(i).trim().split(":")[1].trim()); logger.debug("totelDie " + totelDie); cpYieldLotTo.setTotelDie(totelDie); continue; } } // 1.5 Set data in To cpYieldLotTo.setCpYieldUuid(cpYieldUuid); cpYieldLotTo.setCpTestTimes(cpTestTimes); cpYieldLotTo.setCpLot(cpLot); cpYieldLotTo.setWaferId(waferId); cpYieldLotTo.setMachineId(machineId); cpYieldLotTo.setxMaxCoor(xMaxCoor); cpYieldLotTo.setyMaxCoor(yMaxCoor); cpYieldLotTo.setFlat(flat); String fileMimeType = new MimetypesFileTypeMap().getContentType(txtFile); cpYieldLotTo.setFileName( df2.format(calendar.getTime()).toString() + File.separator + fileNameUid); cpYieldLotTo.setFileMimeType(fileMimeType); cpYieldLotTo.setFtpFlag("N"); fIn.close(); br.close(); Methods.copyFile(txtFile, bkFile); txtFile.delete(); // 1.6 DataBasse // 1.6.1 Insert CP Lot Table cpYieldParserDao.insertCpYieldLot(cpYieldLotTo); cpYieldParserDao.insertCpYieldLotBin(cpYieldLotBins); } fIn.close(); br.close(); logger.info(txtFile.getName() + " is Parser complete"); logger.info(fileNameUid + " is Parser complete"); // logger.debug(tapeList.size()); logger.info("---------------------------------"); } catch (Exception e) { if (fIn != null) { fIn.close(); } logger.info("ERROR MOVE FILE"); Methods.copyFile(txtFile, new File(fileErrorUrl + "\\" + txtFile.getName())); txtFile.delete(); StackTraceElement[] messages = e.getStackTrace(); Exception ex = new Exception(txtFile.getName()); ex.setStackTrace(messages); ex.printStackTrace(); throw ex; } finally { try { if (fIn != null) { fIn.close(); } } catch (IOException ie) { StackTraceElement[] messages = ie.getStackTrace(); int length = messages.length; String error = ""; for (int i = 0; i < length; i++) { error = error + "toString:" + messages[i].toString() + "\r\n"; } ie.printStackTrace(); logger.error(error); return false; } } return true; }