/** * Constructor of the applet. * * @exception HeadlessException if GraphicsEnvironment.isHeadless() * returns true. */ /* public FileFtpApplet() throws HeadlessException { super(); }*/
/** * Called by the browser or applet viewer to inform * this applet that it is being reclaimed and that it should destroy * any resources that it has allocated. The <code>stop</code> method * will always be called before <code>destroy</code>. <p> * * A subclass of <code>Applet</code> should override this method if * it has any operation that it wants to perform before it is * destroyed. For example, an applet with threads would use the * <code>init</code> method to create the threads and the * <code>destroy</code> method to kill them. <p> */ public void destroy() { // Put your code here }
/** * Returns information about this applet. An applet should override * this method to return a <code>String</code> containing information * about the author, version, and copyright of the applet. <p> * * @return a string containing information about the author, version, and * copyright of the applet. */ public String getAppletInfo() { return "This is my default applet created by Eclipse"; }
/** * Called by the browser or applet viewer to inform * this applet that it has been loaded into the system. It is always * called before the first time that the <code>start</code> method is * called. <p> * * A subclass of <code>Applet</code> should override this method if * it has initialization to perform. For example, an applet with * threads would use the <code>init</code> method to create the * threads and the <code>destroy</code> method to kill them. <p> */ public void init() { // Put your code here }
/** * Called by the browser or applet viewer to inform * this applet that it should start its execution. It is called after * the <code>init</code> method and each time the applet is revisited * in a Web page. <p> * * A subclass of <code>Applet</code> should override this method if * it has any operation that it wants to perform each time the Web * page containing it is visited. For example, an applet with * animation might want to use the <code>start</code> method to * resume animation, and the <code>stop</code> method to suspend the * animation. <p> */ public void start() { // Put your code here }
/** * Called by the browser or applet viewer to inform * this applet that it should stop its execution. It is called when * the Web page that contains this applet has been replaced by * another page, and also just before the applet is to be destroyed. <p> * * A subclass of <code>Applet</code> should override this method if * it has any operation that it wants to perform each time the Web * page containing it is no longer visible. For example, an applet * with animation might want to use the <code>start</code> method to * resume animation, and the <code>stop</code> method to suspend the * animation. <p> */ public void stop() { // Put your code here } private static finallong serialVersionUID= 1L;
private FileFtpApplet jFrame= null;
private JButton jFileButton= null;
public FileFtpApplet() { // TODO Auto-generated constructor stub jFrame =this; this.setSize(496,260); jFileButton =new JButton("打开文件"); jFrame.add(jFileButton); jFileButton.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent e) { // System.out.println("mouseClicked()");// TODO // Auto-generated Event stub mouseClicked() JFileChooser jfChooser =new JFileChooser("D:\..\.."); jfChooser.setDialogTitle("打开并上传文件"); jfChooser.setFileFilter(new FileFilter() { @Override public boolean accept(File f) { if (f.getName().endsWith("dat")|| f.isDirectory()) return true; return false; } @Override public String getDescription() { // TODO Auto-generated method stub return"数据文件(*.dat)"; } }); int result = jfChooser.showOpenDialog(jFrame); if (result == JFileChooser.APPROVE_OPTION) {// 确认打开
long lRemoteSize= files[0].getSize(); File f = new File(local); //本地存在文件,进行断点下载 if(f.exists()){ long localSize= f.length(); //判断本地文件大小是否大于远程文件大小 if(localSize>= lRemoteSize){ System.out.println("本地文件大于远程文件,下载中止"); return DownloadStatus.Local_Bigger_Remote; }
//进行断点续传,并记录状态 FileOutputStream out =new FileOutputStream(f,true); ftpClient.setRestartOffset(localSize); InputStream in = ftpClient.retrieveFileStream(new String(remote.getBytes("GBK"),"iso-8859-1")); byte[] bytes= newbyte[1024]; long step = lRemoteSize /100; long process=localSize/step; int c; while((c = in.read(bytes))!=-1){ out.write(bytes,0,c); localSize+=c; long nowProcess= localSize/step; if(nowProcess> process){ process = nowProcess; if(process % 10== 0) System.out.println("下载进度:"+process); //TODO 更新文件下载进度,值存放在process变量中 } } in.close(); out.close(); boolean isDo= ftpClient.completePendingCommand(); if(isDo){ result = DownloadStatus.Download_From_Break_Success; }else { result = DownloadStatus.Download_From_Break_Failed; } }else { OutputStream out =new FileOutputStream(f); InputStream in= ftpClient.retrieveFileStream(new String(remote.getBytes("GBK"),"iso-8859-1")); byte[] bytes= newbyte[1024]; long step = lRemoteSize /100; long process=0; long localSize= 0L; int c; while((c = in.read(bytes))!=-1){ out.write(bytes, 0, c); localSize+=c; long nowProcess= localSize/step; if(nowProcess> process){ process = nowProcess; if(process % 10== 0) System.out.println("下载进度:"+process); //TODO 更新文件下载进度,值存放在process变量中 } } in.close(); out.close(); boolean upNewStatus= ftpClient.completePendingCommand(); if(upNewStatus){ result = DownloadStatus.Download_New_Success; }else { result = DownloadStatus.Download_New_Failed; } } return result; }