|
What this is
Other links
The source code/* ** Tim Endres' utilities package. ** Copyright (c) 1997 by Tim Endres ** ** This program is free software. ** ** You may redistribute it and/or modify it under the terms of the GNU ** General Public License as published by the Free Software Foundation. ** Version 2 of the license should be included with this distribution in ** the file LICENSE, as well as License.html. If the license is not ** included with this distribution, you may find a copy at the FSF web ** site at 'www.gnu.org' or 'www.fsf.org', or you may write to the ** Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139 USA. ** ** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND, ** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR ** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY ** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR ** REDISTRIBUTION OF THIS SOFTWARE. ** */ package com.ice.util; import java.io.*; import java.net.*; public class ResourceUtilities { /** * Copies a named resource to a File. * * @param resourceURL The name of the resource to copy. * @param destFile The File to copy the resource's contents into. */ public static void copyResourceToFile( String resourceURL, File destFile ) throws IOException { BufferedInputStream in = new BufferedInputStream( ResourceUtilities.openNamedResource ( resourceURL ) ); BufferedOutputStream out = new BufferedOutputStream( new FileOutputStream( destFile ) ); byte[] buf = new byte[ 4096 ]; for ( ; ; ) { int numRead = in.read( buf, 0, buf.length ); if ( numRead == -1 ) break; out.write( buf, 0, numRead ); } in.close(); out.close(); } /** * Opens a resource and return an InputStream that will read * the contents of the resource. A resource URL is used to name * the resource. The URL can be any valid URL to which you can * establish a connect, including web pages, ftp site files, and * files in the CLASSPATH including JAR files. * <p> * To open a file on the CLASSPATH, use a full class name, with * the slash syntax, such "/com/ice/util/ResourceUtilities.class". * Note the leading slash. * * @param path The properties resource's name. * @param props The system properties to add properties into. * @return The InputStream that will read the resource's contents. */ public static InputStream openNamedResource( String resourceURL ) throws java.io.IOException { InputStream in = null; boolean result = false; boolean httpURL = false; URL propsURL = null; // // UNDONE REVIEW // I really should be getting the URL's protocol, when it // is a "full" URL, and checking for the different possible // error returns for http, ftp, et.al. // try { propsURL = new URL( resourceURL ); } catch ( MalformedURLException ex ) { propsURL = null; } if ( propsURL == null ) { propsURL = ResourceUtilities.class.getResource( resourceURL ); if ( propsURL == null && resourceURL.startsWith( "FILE:" ) ) { try { in = new FileInputStream ( resourceURL.substring( 5 ) ); return in; } catch ( FileNotFoundException ex ) { in = null; propsURL = null; } } } else { String protocol = propsURL.getProtocol(); httpURL = protocol.equals( "http" ); } if ( propsURL != null ) { URLConnection urlConn = propsURL.openConnection(); if ( httpURL ) { String hdrVal = urlConn.getHeaderField(0); if ( hdrVal != null ) { String code = HTTPUtilities.getResultCode( hdrVal ); if ( code != null ) { if ( ! code.equals( "200" ) ) { throw new java.io.IOException ( "status code = " + code ); } } } } in = urlConn.getInputStream(); } if ( in == null ) throw new java.io.IOException ( "could not locate resource '" + resourceURL + "'" ); return in; } } |
... 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.