|
What this is
Other links
The source code/* * 06/13/2003 * * Copyright (C) 2003 Paolo Giarrusso * blaisorblade_work@yahoo.it * www.jext.org * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package org.jext.misc; import java.io.*; import java.net.*; public class DownloaderThread extends CopyThread { protected URL source; protected String outPath, tempPath; protected File outFile, tempFile; /*public static DownloaderThread newInstance(InputStream _in, OutputStream _out, HandlingRunnable _notify, int _expectedLen, String _outPath) { }*/ public DownloaderThread(URL source, HandlingRunnable notify, String outPath) { super(notify); this.outPath = outPath; this.source = source; } public Object work() throws IOException { URLConnection conn = source.openConnection(); int expectedLen = conn.getContentLength(); String tempPath = outPath + "__FRAG__"; File outFile = new File(outPath); File tempFile = new File(tempPath); //FIXME: think about the case below. The caller must avoid that we download the file 2 times. //Not us! /*if (tempFile.exists()) tempFile.renameTo(new File(tempPath + ".bak")); //Could fail and return false!*/ this.in = new BufferedInputStream(conn.getInputStream()); this.out = new BufferedOutputStream(new FileOutputStream(tempFile)); super.work(); if (expectedLen != -1 && expectedLen != tempFile.length()) throw new IOException("The download was not completed"); if (outFile.exists()) { outFile.renameTo(new File(outPath + ".bak")); outFile.delete(); } tempFile.renameTo(outFile); return null; } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.