[Schmitzm-commits] r601 - branches/1.0-gt2-2.6/src/schmitzm/io
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Wed Dec 2 19:29:56 CET 2009
Author: alfonx
Date: 2009-12-02 19:29:55 +0100 (Wed, 02 Dec 2009)
New Revision: 601
Modified:
branches/1.0-gt2-2.6/src/schmitzm/io/IOUtil.java
Log:
Added method readURLasString for convenience.
Formatted the code.. sorry..
Modified: branches/1.0-gt2-2.6/src/schmitzm/io/IOUtil.java
===================================================================
--- branches/1.0-gt2-2.6/src/schmitzm/io/IOUtil.java 2009-12-01 17:59:07 UTC (rev 600)
+++ branches/1.0-gt2-2.6/src/schmitzm/io/IOUtil.java 2009-12-02 18:29:55 UTC (rev 601)
@@ -29,10 +29,12 @@
******************************************************************************/
package schmitzm.io;
+import java.io.BufferedReader;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
@@ -41,157 +43,190 @@
/**
* Diese Klasse stellt statische Methoden fuer die Ein/Ausgabe zur Verfuegung.
- *
- * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a> (University of Bonn/Germany)
- *
+ *
+ * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a>
+ * (University of Bonn/Germany)
+ *
* @version 1.0
*/
public class IOUtil {
- private static Logger LOGGER = Logger.getLogger( IOUtil.class.getName() );
+ private static Logger LOGGER = Logger.getLogger(IOUtil.class.getName());
- /** {@link FileFilter}, der alle Dateien akzeptiert, aber keine Verzeichnisse. */
- public static final FileFilter ALL_FILES_FILTER = createSimpleFileFilter("*", FilterMode.FILES_ONLY);
- /** {@link FileFilter}, der alle Verzeichnisse akzeptiert, aber keine "normalen" Dateien. */
- public static final FileFilter ALL_DIRS_FILTER = createSimpleFileFilter("*", FilterMode.DIR_ONLY);
- /** {@link FileFilter}, der alle Dateien und Verzeichnisse akzeptiert. */
- public static final FileFilter ALL_FILTER = createSimpleFileFilter("*", FilterMode.ALL);
+ /**
+ * {@link FileFilter}, der alle Dateien akzeptiert, aber keine Verzeichnisse.
+ */
+ public static final FileFilter ALL_FILES_FILTER = createSimpleFileFilter(
+ "*", FilterMode.FILES_ONLY);
+ /**
+ * {@link FileFilter}, der alle Verzeichnisse akzeptiert, aber keine
+ * "normalen" Dateien.
+ */
+ public static final FileFilter ALL_DIRS_FILTER = createSimpleFileFilter(
+ "*", FilterMode.DIR_ONLY);
+ /** {@link FileFilter}, der alle Dateien und Verzeichnisse akzeptiert. */
+ public static final FileFilter ALL_FILTER = createSimpleFileFilter("*",
+ FilterMode.ALL);
- /**
- * Modi fuer Filter.
- * @see IOUtil#createSimpleFileFilter(String, FilterMode)
- * @see IOUtil#createRegExFileFilter(String, FilterMode)
- * @author mojays
- *
- */
- public static enum FilterMode {
- /** Der Filter liefert nur Dateien, aber keine Verzeichnisse. */
- FILES_ONLY,
- /** Der Filter liefert nur Verzeichnisse, aber keine Dateien. */
- DIR_ONLY,
- /** Der Filter liefert Dateien und Verzeichnisse. */
- ALL
- }
+ /**
+ * Modi fuer Filter.
+ *
+ * @see IOUtil#createSimpleFileFilter(String, FilterMode)
+ * @see IOUtil#createRegExFileFilter(String, FilterMode)
+ * @author mojays
+ *
+ */
+ public static enum FilterMode {
+ /** Der Filter liefert nur Dateien, aber keine Verzeichnisse. */
+ FILES_ONLY,
+ /** Der Filter liefert nur Verzeichnisse, aber keine Dateien. */
+ DIR_ONLY,
+ /** Der Filter liefert Dateien und Verzeichnisse. */
+ ALL
+ }
- /**
- * Prueft, ob ein {@link File} einen angegebenen {@link FilterMode}
- * erfuellt.
- * @param file eine Datei oder ein Verzeichnis
- * @param mode Filter-Modus (wenn {@code null} wird {@link FilterMode#ALL}
- * angenommen
- * @return {@code false} wenn die angegebenen Datei {@code null} ist
- */
- public static boolean fileFitsFilterMode(File file, FilterMode mode) {
- if ( mode == null )
- mode = FilterMode.ALL;
- final boolean acceptFiles = FilterMode.ALL.equals(mode) || FilterMode.FILES_ONLY.equals(mode);
- final boolean acceptDirs = FilterMode.ALL.equals(mode) || FilterMode.DIR_ONLY.equals(mode);
+ /**
+ * Prueft, ob ein {@link File} einen angegebenen {@link FilterMode}
+ * erfuellt.
+ *
+ * @param file
+ * eine Datei oder ein Verzeichnis
+ * @param mode
+ * Filter-Modus (wenn {@code null} wird {@link FilterMode#ALL}
+ * angenommen
+ * @return {@code false} wenn die angegebenen Datei {@code null} ist
+ */
+ public static boolean fileFitsFilterMode(File file, FilterMode mode) {
+ if (mode == null)
+ mode = FilterMode.ALL;
+ final boolean acceptFiles = FilterMode.ALL.equals(mode)
+ || FilterMode.FILES_ONLY.equals(mode);
+ final boolean acceptDirs = FilterMode.ALL.equals(mode)
+ || FilterMode.DIR_ONLY.equals(mode);
- return file != null && ( file.isDirectory() && acceptDirs || acceptFiles );
- }
+ return file != null
+ && (file.isDirectory() && acceptDirs || acceptFiles);
+ }
+ /**
+ * Liefert den Index des Dateinames, an der die Dateinamen-Erweiterung
+ * (inkl. Punkt) beginnt.
+ *
+ * @param file
+ * Datei
+ */
+ public static int getFileExtIdx(File file) {
+ return getFileExtIdx(file.getAbsolutePath());
+ }
- /**
- * Liefert den Index des Dateinames, an der die Dateinamen-Erweiterung
- * (inkl. Punkt) beginnt.
- * @param file Datei
- */
- public static int getFileExtIdx(File file) {
- return getFileExtIdx(file.getAbsolutePath());
- }
+ /**
+ * Liefert den Index des Dateinames, an der die Dateinamen-Erweiterung
+ * (inkl. Punkt) beginnt.
+ *
+ * @param file
+ * Datei
+ */
+ public static int getFileExtIdx(String pathOrName) {
+ int lastPointIdx = pathOrName.lastIndexOf('.');
+ int lastSepIdx = pathOrName.lastIndexOf(File.separatorChar);
+ if (lastPointIdx < lastSepIdx)
+ return -1;
+ return lastPointIdx;
+ }
- /**
- * Liefert den Index des Dateinames, an der die Dateinamen-Erweiterung
- * (inkl. Punkt) beginnt.
- * @param file Datei
- */
- public static int getFileExtIdx(String pathOrName) {
- int lastPointIdx = pathOrName.lastIndexOf('.');
- int lastSepIdx = pathOrName.lastIndexOf(File.separatorChar);
- if ( lastPointIdx < lastSepIdx )
- return -1;
- return lastPointIdx;
- }
+ /**
+ * Liefert die Dateinamen-Erweiterung (z.B. ".exe") einer Datei.
+ *
+ * @param file
+ * Datei
+ * @return Leerstring, falls die Datei keine Erweiterung hat
+ */
+ public static String getFileExt(File file) {
+ return getFileExt(file, true);
+ }
- /**
- * Liefert die Dateinamen-Erweiterung (z.B. ".exe") einer Datei.
- * @param file Datei
- * @return Leerstring, falls die Datei keine Erweiterung hat
- */
- public static String getFileExt(File file) {
- return getFileExt(file, true);
- }
+ /**
+ * Liefert die Dateinamen-Erweiterung (z.B. ".exe") einer Datei.
+ *
+ * @param file
+ * Datei
+ * @param withDot
+ * wenn {@code false} wird die Dateinamen-Erweiterung ohne den
+ * fuehrenden Punkt zurueckgegeben (z.B. "exe" statt ".exe")
+ * @return Leerstring, falls die Datei keine Erweiterung hat
+ */
+ public static String getFileExt(File file, boolean withDot) {
+ int extIdx = getFileExtIdx(file);
+ if (extIdx < 0)
+ return "";
+ if (!withDot)
+ extIdx++;
+ return file.getAbsolutePath().substring(extIdx);
+ }
- /**
- * Liefert die Dateinamen-Erweiterung (z.B. ".exe") einer Datei.
- * @param file Datei
- * @param withDot wenn {@code false} wird die Dateinamen-Erweiterung ohne
- * den fuehrenden Punkt zurueckgegeben (z.B. "exe" statt ".exe")
- * @return Leerstring, falls die Datei keine Erweiterung hat
- */
- public static String getFileExt(File file, boolean withDot) {
- int extIdx = getFileExtIdx(file);
- if ( extIdx < 0 )
- return "";
- if ( !withDot )
- extIdx++;
- return file.getAbsolutePath().substring(extIdx);
- }
+ /**
+ * Haengt an einen Dateinamen-Erweiterung eine Erweiterung an, sofern diese
+ * noch nicht angehaengt ist.
+ *
+ * @param file
+ * Datei
+ * @param newExt
+ * neue Dateinamen-Erweiterung (mit oder ohne ".")
+ * @return neues {@link File}-Objekt
+ */
+ public static File appendFileExt(File file, String newExt) {
+ if (!newExt.startsWith("."))
+ newExt = "." + newExt;
+ String oldExt = getFileExt(file, true);
+ if (!oldExt.equalsIgnoreCase(newExt))
+ file = new File(file.getAbsolutePath() + newExt);
+ return file;
+ }
- /**
- * Haengt an einen Dateinamen-Erweiterung eine Erweiterung an, sofern diese
- * noch nicht angehaengt ist.
- * @param file Datei
- * @param newExt neue Dateinamen-Erweiterung (mit oder ohne ".")
- * @return neues {@link File}-Objekt
- */
- public static File appendFileExt(File file, String newExt) {
- if (!newExt.startsWith("."))
- newExt = "."+newExt;
- String oldExt = getFileExt(file,true);
- if ( !oldExt.equalsIgnoreCase(newExt) )
- file = new File( file.getAbsolutePath() + newExt );
- return file;
- }
+ /**
+ * Aendert die Dateinamen-Erweiterung (z.B. ".exe") einer Datei.
+ *
+ * @param file
+ * Datei
+ * @param newExt
+ * neue Dateinamen-Erweiterung (ohne ".")
+ * @return neues {@link File}-Objekt
+ */
+ public static File changeFileExt(File file, String newExt) {
+ String baseName = getBaseFilePath(file);
+ return new File(baseName + "." + newExt);
+ }
- /**
- * Aendert die Dateinamen-Erweiterung (z.B. ".exe") einer Datei.
- * @param file Datei
- * @param newExt neue Dateinamen-Erweiterung (ohne ".")
- * @return neues {@link File}-Objekt
- */
- public static File changeFileExt(File file, String newExt) {
- String baseName = getBaseFilePath(file);
- return new File( baseName+"."+newExt );
- }
-
-
/**
* Changes the ending (e.g. ".sld") of a {@link URL}
- *
- * @param url {@link URL} like <code>file:/sds/a.bmp</code>
- * @param postfix New file extension for the {@link URL} without <code>.</code>
- *
+ *
+ * @param url
+ * {@link URL} like <code>file:/sds/a.bmp</code>
+ * @param postfix
+ * New file extension for the {@link URL} without <code>.</code>
+ *
* @return A new {@link URL} with new extension.
- *
- * @author <a href="mailto:skpublic at wikisquare.de">Stefan Alfons Krüger</a>
*
+ * @author <a href="mailto:skpublic at wikisquare.de">Stefan Alfons
+ * Krüger</a>
+ *
*/
- public static URL changeUrlExt(final URL url, final String postfix) throws IllegalArgumentException{
+ public static URL changeUrlExt(final URL url, final String postfix)
+ throws IllegalArgumentException {
String a = url.toExternalForm();
- final int lastDotPos = a.lastIndexOf('.');
- if ( lastDotPos >= 0 )
- a = a.substring(0, lastDotPos);
- a = a + "." + postfix;
+ final int lastDotPos = a.lastIndexOf('.');
+ if (lastDotPos >= 0)
+ a = a.substring(0, lastDotPos);
+ a = a + "." + postfix;
try {
return new URL(a);
} catch (final MalformedURLException e) {
- throw new IllegalArgumentException("can't create a new URL for "+url+" with new extension "+postfix, e);
+ throw new IllegalArgumentException("can't create a new URL for "
+ + url + " with new extension " + postfix, e);
}
}
-
- /**
+ /**
* Die Funktion soll der Funktion File.getParent() fuer URLs entsprechen.
* Die URL wird in einen Sting konvertiert und dann (kuerzer) neu
* zusammengesetzt. Falls eine Verkuerzung nicht moeglich ist, wird eine
@@ -199,8 +234,8 @@
*
* @author <a href="mailto:skpublic at wikisquare.de">Stefan Alfons
* Krüger</a>
- *
- *
+ *
+ *
*/
public static URL getParentUrl(final URL url) throws MalformedURLException {
String a = url.toExternalForm();
@@ -209,16 +244,16 @@
a = a.substring(0, lastDotPos);
/**
- * The parent of jar:file:some!/bar.file is jar:file:some!/, not jar:file:some!
+ * The parent of jar:file:some!/bar.file is jar:file:some!/, not
+ * jar:file:some!
*/
- if (a.endsWith("!")) a+="/";
+ if (a.endsWith("!"))
+ a += "/";
return new URL(a);
}
-
-
- /**
+ /**
* @deprecated use getParentUrl()
*/
public static URL getParentURL(URL url) throws MalformedURLException {
@@ -226,285 +261,329 @@
}
/**
- * Erweitert eine {@link URL}. Bei der uebergebenen URL muss es sich um ein Verzeichnis handeln, sonst
- * wird eine {@link MalformedURLException} geschmissen
+ * Erweitert eine {@link URL}. Bei der uebergebenen URL muss es sich um ein
+ * Verzeichnis handeln, sonst wird eine {@link MalformedURLException}
+ * geschmissen
+ *
* @param base
* @param string
- *
+ *
* @throws MalformedURLException
*/
- public static URL extendURL(URL base, String string) throws MalformedURLException {
+ public static URL extendURL(URL base, String string)
+ throws MalformedURLException {
String a = base.toExternalForm();
- if (!a.endsWith("/")) a+= "/";
- a+= string;
+ if (!a.endsWith("/"))
+ a += "/";
+ a += string;
return new URL(a);
}
+ /**
+ * Liefert den Pfad ohne Erweiterung (z.B. ohne ".exe") einer Datei.
+ *
+ * @param file
+ * Datei
+ *
+ * @see #getBaseFileName(File)
+ */
+ public static String getBaseFilePath(File file) {
+ int extIdx = getFileExtIdx(file);
+ if (extIdx < 0)
+ return file.getAbsolutePath();
+ return file.getAbsolutePath().substring(0, extIdx);
+ }
+ /**
+ * Liefert den Dateinamen ohne Erweiterung (z.B. ohne ".exe") einer Datei.
+ *
+ * @param file
+ * Datei
+ *
+ * @see #getBaseFilePath(File)
+ */
+ public static String getBaseFileName(File file) {
+ int extIdx = getFileExtIdx(file.getName());
+ if (extIdx < 0)
+ return file.getName();
+ return file.getName().substring(0, extIdx);
+ }
- /**
- * Liefert den Pfad ohne Erweiterung (z.B. ohne ".exe") einer Datei.
- *
- * @param file Datei
- *
- * @see #getBaseFileName(File)
- */
- public static String getBaseFilePath(File file) {
- int extIdx = getFileExtIdx(file);
- if ( extIdx < 0 )
- return file.getAbsolutePath();
- return file.getAbsolutePath().substring(0,extIdx);
- }
+ /**
+ * Liefert das oberste Verzeichnis zu einer Datei (Haupt-Verzeichnis).
+ *
+ * @param file
+ * Datei
+ */
+ public static File getRootDir(File file) {
+ File temp = new File(file.getAbsolutePath());
+ while (temp.getParentFile() != null)
+ temp = temp.getParentFile();
+ return temp;
+ }
- /**
- * Liefert den Dateinamen ohne Erweiterung (z.B. ohne ".exe") einer Datei.
- *
- * @param file Datei
- *
- * @see #getBaseFilePath(File)
- */
- public static String getBaseFileName(File file) {
- int extIdx = getFileExtIdx( file.getName() );
- if ( extIdx < 0 )
- return file.getName();
- return file.getName().substring(0,extIdx);
- }
-
- /**
- * Liefert das oberste Verzeichnis zu einer Datei (Haupt-Verzeichnis).
- * @param file Datei
- */
- public static File getRootDir(File file) {
- File temp = new File(file.getAbsolutePath());
- while( temp.getParentFile() != null )
- temp = temp.getParentFile();
- return temp;
- }
+ /**
+ * Erzeugt ein neues File-Objekt relativ zu einer Pfad-Angabe.<br>
+ * Im Normalfall setzt sich der neue Datei-Pfad aus <code>baseDir</code> und
+ * <code>path</code> zusammen, also <i>newFile = <code>baseDir</code> +
+ * <code>path<code></i>.<br>
+ * <b>Ausnahme 1:</b><br>
+ * Beginnt <code>path</code> mit einem Slash (bzw. Backslash bei Windows),
+ * ist <i>newFile = ROOT(<code>baseDir</code>) + <code>path<code></i>,
+ * wobei <i>ROOT(<code>baseDir</code>)</i></center> das Hauptverzeichnis
+ * (Laufwerk) des Basis-Verzeichnisses bezeichnet.<br>
+ * <b>Ausnahme 2:</b><br>
+ * Stellt <code>path</code> bereits eine absolute Pfadangabe dar (inkl.
+ * Laufwerksbezeichnung), ist <i>newFile = <code>path<code></i>.
+ *
+ * @param baseDir
+ * Basis-Verzeichnis
+ * @param path
+ * Pfad/Datei-Angabe relativ zu <code>baseDir</code>
+ * @see #getRootDir(File)
+ */
+ public static File createRelativeFile(File baseDir, String path) {
+ File file = new File(path);
- /**
- * Erzeugt ein neues File-Objekt relativ zu einer Pfad-Angabe.<br>
- * Im Normalfall setzt sich der neue Datei-Pfad aus <code>baseDir</code> und
- * <code>path</code> zusammen, also <i>newFile = <code>baseDir</code> + <code>path<code></i>.<br>
- * <b>Ausnahme 1:</b><br>
- * Beginnt <code>path</code> mit einem Slash (bzw. Backslash bei Windows), ist
- * <i>newFile = ROOT(<code>baseDir</code>) + <code>path<code></i>,
- * wobei <i>ROOT(<code>baseDir</code>)</i></center> das Hauptverzeichnis
- * (Laufwerk) des Basis-Verzeichnisses bezeichnet.<br>
- * <b>Ausnahme 2:</b><br>
- * Stellt <code>path</code> bereits eine absolute Pfadangabe dar (inkl.
- * Laufwerksbezeichnung), ist <i>newFile = <code>path<code></i>.
- * @param baseDir Basis-Verzeichnis
- * @param path Pfad/Datei-Angabe relativ zu <code>baseDir</code>
- * @see #getRootDir(File)
- */
- public static File createRelativeFile(File baseDir, String path) {
- File file = new File( path );
+ // In relPath steht absolute Pfadangabe -> BaseDir ignorieren
+ if (path.equalsIgnoreCase(file.getAbsolutePath()))
+ return file;
- // In relPath steht absolute Pfadangabe -> BaseDir ignorieren
- if ( path.equalsIgnoreCase( file.getAbsolutePath() ) )
- return file;
+ // Source-Tag beginnt mit '\' -> Source-Angabe relativ zum
+ // Haupt-Verzeichnis
+ if (path.startsWith(File.separator))
+ return new File(IOUtil.getRootDir(baseDir), path);
- // Source-Tag beginnt mit '\' -> Source-Angabe relativ zum Haupt-Verzeichnis
- if ( path.startsWith( File.separator ) )
- return new File(IOUtil.getRootDir(baseDir),path );
+ // Sonst: BaseDir als Basis fuer Source verwenden
+ return new File(baseDir, path);
+ }
- // Sonst: BaseDir als Basis fuer Source verwenden
- return new File(baseDir, path);
- }
+ /**
+ * Versucht einen Eingabe-Stream zu schliessen.<br>
+ * Dabei werden bei Misserfolg keine Exceptions geworfen! SK: bei
+ * <code>null</code> wird true zurueckgegeben
+ *
+ * @param in
+ * zu schliessender Stream
+ * @return <code>false</code> falls das Schliessen nicht erfolgreich war
+ */
+ public static boolean closeInputStream(InputStream in) {
+ if (in == null)
+ return true;
+ try {
+ in.close();
+ } catch (Exception err) {
+ return false;
+ }
+ return true;
+ }
- /**
- * Versucht einen Eingabe-Stream zu schliessen.<br>
- * Dabei werden bei Misserfolg keine Exceptions geworfen!
- * SK: bei <code>null</code> wird true zurueckgegeben
- *
- * @param in zu schliessender Stream
- * @return <code>false</code> falls das Schliessen nicht erfolgreich war
- */
- public static boolean closeInputStream(InputStream in) {
- if (in == null) return true;
- try {
- in.close();
- } catch (Exception err) {
- return false;
- }
- return true;
- }
+ /**
+ * Versucht alle gegebenen Eingabe-Streams zu schliessen.<br>
+ * Dabei werden bei Misserfolg keine Exceptions geworfen!
+ *
+ * @param in
+ * zu schliessende Streams
+ * @return <code>true</code> falls das Schliessen aller Streams erfolgreich
+ * war
+ */
+ public static boolean closeInputStream(InputStream[] in) {
+ boolean result = true;
+ for (int i = 0; i < in.length; i++)
+ result &= closeInputStream(in[i]);
+ return result;
+ }
- /**
- * Versucht alle gegebenen Eingabe-Streams zu schliessen.<br>
- * Dabei werden bei Misserfolg keine Exceptions geworfen!
- * @param in zu schliessende Streams
- * @return <code>true</code> falls das Schliessen aller Streams erfolgreich war
- */
- public static boolean closeInputStream(InputStream[] in) {
- boolean result = true;
- for (int i=0; i<in.length; i++)
- result &= closeInputStream(in[i]);
- return result;
- }
+ /**
+ * Versucht einen Ausgabe-Stream zu schliessen. Zuvor wird ein
+ * {@link OutputStream#flush() flush()} auf den Stream getaetigt.<br>
+ * Bei Misserfolg werden keine Exceptions geworfen! SK: bei
+ * <code>null</code> wird true zurueckgegeben *
+ *
+ * @param out
+ * zu schliessender Stream
+ * @return <code>false</code> falls das Schliessen nicht erfolgreich war
+ */
+ public static boolean closeOutputStream(OutputStream out) {
+ if (out == null)
+ return true;
+ try {
+ out.flush();
+ out.close();
+ } catch (Exception err) {
+ return false;
+ }
+ return true;
+ }
- /**
- * Versucht einen Ausgabe-Stream zu schliessen. Zuvor wird ein
- * {@link OutputStream#flush() flush()} auf den Stream getaetigt.<br>
- * Bei Misserfolg werden keine Exceptions geworfen!
- * SK: bei <code>null</code> wird true zurueckgegeben *
- * @param out zu schliessender Stream
- * @return <code>false</code> falls das Schliessen nicht erfolgreich war
- */
- public static boolean closeOutputStream(OutputStream out) {
- if (out == null) return true;
- try {
- out.flush();
- out.close();
- } catch (Exception err) {
- return false;
- }
- return true;
- }
+ /**
+ * Prueft, ob eine (Datei-)Zeile mit einem Kommentarkennzeichen beginnt und
+ * deshalb ignoriert werden muss. Kommentar-Kennzeichen sind <code>//</code>
+ * , <code>#</code> und <code>|</code>.
+ *
+ * @param line
+ * Eingabe-Zeile
+ */
+ public static boolean isCommentLine(String line) {
+ return line.startsWith("//") || line.startsWith("#")
+ || line.startsWith("|");
+ }
- /**
- * Prueft, ob eine (Datei-)Zeile mit einem Kommentarkennzeichen beginnt
- * und deshalb ignoriert werden muss. Kommentar-Kennzeichen sind
- * <code>//</code>, <code>#</code> und <code>|</code>.
- * @param line Eingabe-Zeile
- */
- public static boolean isCommentLine(String line) {
- return line.startsWith("//") ||
- line.startsWith("#") ||
- line.startsWith("|");
- }
+ /**
+ * Schreibt einen Eingabe-Stream in eine Datei.
+ *
+ * @param file
+ * Dateipfad fuer die Zieldatei
+ * @exception java.io.IOException
+ * falls das Lesen aus dem Stream oder das Schreiben in die
+ * Ausgabedatei scheitert
+ */
+ public static void writeStreamToFile(InputStream input, String file)
+ throws IOException {
+ OutputStream output = new FileOutputStream(file);
+ while (input.available() > 0)
+ output.write(input.read());
+ output.flush();
+ output.close();
+ }
- /**
- * Schreibt einen Eingabe-Stream in eine Datei.
- * @param file Dateipfad fuer die Zieldatei
- * @exception java.io.IOException falls das Lesen aus dem Stream oder
- * das Schreiben in die Ausgabedatei scheitert
- */
- public static void writeStreamToFile(InputStream input, String file) throws IOException {
- OutputStream output = new FileOutputStream(file);
- while (input.available() > 0) output.write(input.read());
- output.flush();
- output.close();
- }
+ /**
+ * Erstellt einen Filter fuer einen regulaeren Ausdruck.
+ *
+ * @param filterStr
+ * definiert den Filter
+ */
+ public static FileFilter createRegExFileFilter(final String regEx,
+ final FilterMode mode) {
+ return new FileFilter() {
+ public boolean accept(File file) {
+ return fileFitsFilterMode(file, mode)
+ && file.getName().matches(regEx);
+ }
+ };
+ }
- /**
- * Erstellt einen Filter fuer einen regulaeren Ausdruck.
- * @param filterStr definiert den Filter
- */
- public static FileFilter createRegExFileFilter(final String regEx, final FilterMode mode) {
- return new FileFilter() {
- public boolean accept(File file) {
- return fileFitsFilterMode(file,mode) && file.getName().matches(regEx);
- }
- };
- }
+ /**
+ * Erstellt einen Filter fuer einen Filter-String. Dieser kann als Wildcard
+ * das Zeichen "*" enthalten. Alle anderen Zeichen werden direkt als Filter
+ * verwendet.
+ *
+ * @param filterStr
+ * definiert den Filter
+ */
+ public static FileFilter createSimpleFileFilter(String filterStr,
+ final FilterMode mode) {
+ // Gross/Klein-Schreibung ignorieren
+ filterStr = filterStr.toLowerCase();
+ // ##### Filter definiert den "inneren" Teil eines Dateinames #####
+ if (filterStr.startsWith("*") && filterStr.endsWith("*")) {
+ // Filter besteht nur aus "*" --> alle Dateien akzeptieren
+ if (filterStr.length() <= 2)
+ return new FileFilter() {
+ public boolean accept(File file) {
+ return fileFitsFilterMode(file, mode);
+ }
+ };
+ // "inneren" Teil des Filters extrahieren
+ final String condStr = filterStr.substring(1,
+ filterStr.length() - 1);
+ return new FileFilter() {
+ public boolean accept(File file) {
+ return fileFitsFilterMode(file, mode)
+ && file.getName().toLowerCase().contains(condStr);
+ }
+ };
+ }
- /**
- * Erstellt einen Filter fuer einen Filter-String. Dieser kann
- * als Wildcard das Zeichen "*" enthalten. Alle anderen Zeichen
- * werden direkt als Filter verwendet.
- * @param filterStr definiert den Filter
- */
- public static FileFilter createSimpleFileFilter(String filterStr, final FilterMode mode) {
- // Gross/Klein-Schreibung ignorieren
- filterStr = filterStr.toLowerCase();
+ // ##### Filter definiert den Anfang eines Dateinames #####
+ if (filterStr.endsWith("*")) {
+ // Anfang des Filters extrahieren
+ final String condStr = filterStr.substring(0,
+ filterStr.length() - 1);
+ return new FileFilter() {
+ public boolean accept(File file) {
+ return fileFitsFilterMode(file, mode)
+ && file.getName().toLowerCase().startsWith(condStr);
+ }
+ };
+ }
+ // ##### Filter definiert das Ende eines Dateinames #####
+ if (filterStr.startsWith("*")) {
+ // Ende des Filters extrahieren
+ final String condStr = filterStr.substring(1);
+ return new FileFilter() {
+ public boolean accept(File file) {
+ return fileFitsFilterMode(file, mode)
+ && file.getName().toLowerCase().endsWith(condStr);
+ }
+ };
+ }
+ // ##### Filter definiert den genauen Dateinamen #####
+ final String condStr = filterStr;
+ return new FileFilter() {
+ public boolean accept(File file) {
+ return fileFitsFilterMode(file, mode)
+ && file.getName().equalsIgnoreCase(condStr);
+ }
+ };
+ }
- //##### Filter definiert den "inneren" Teil eines Dateinames #####
- if ( filterStr.startsWith("*") && filterStr.endsWith("*") ) {
- // Filter besteht nur aus "*" --> alle Dateien akzeptieren
- if ( filterStr.length() <= 2 )
- return new FileFilter() {
- public boolean accept(File file) {
- return fileFitsFilterMode(file,mode);
- }
- };
- // "inneren" Teil des Filters extrahieren
- final String condStr = filterStr.substring(1,filterStr.length()-1);
- return new FileFilter() {
- public boolean accept(File file) {
- return fileFitsFilterMode(file,mode) && file.getName().toLowerCase().contains(condStr) ;
- }
- };
- }
+ /**
+ * Loescht Dateien oder Verzeichnisse in einem Verzeichnis. Das Verzeichnis
+ * selbst wird dabei NICHT geloescht, auch wenn es am Ende leer ist!
+ *
+ * @param dir
+ * Verzeichnis in dem Dateien/Verzeichnisse geloescht werden
+ * @param filter
+ * bestimmt, welche Dateien/Verzeichnisse geloescht werden
+ * @param recursive
+ * wenn {@code true} werden auch alle Dateien/Verzeichnisse in
+ * Unterverzeichnissen geloescht, die dem Filter entsprechen
+ * @param showFiles
+ * wenn {@code true} werden die geloeschten Dateien auf der
+ * Console ausgegeben
+ * @return Anzahl geloeschter Dateien und Verzeichnisse
+ */
+ public static int deleteFiles(File dir, FileFilter filter,
+ boolean recursive, boolean showFiles) {
+ if (!dir.isDirectory())
+ return 0;
- //##### Filter definiert den Anfang eines Dateinames #####
- if ( filterStr.endsWith("*") ) {
- // Anfang des Filters extrahieren
- final String condStr = filterStr.substring(0,filterStr.length()-1);
- return new FileFilter() {
- public boolean accept(File file) {
- return fileFitsFilterMode(file,mode) && file.getName().toLowerCase().startsWith(condStr) ;
- }
- };
- }
- //##### Filter definiert das Ende eines Dateinames #####
- if ( filterStr.startsWith("*") ) {
- // Ende des Filters extrahieren
- final String condStr = filterStr.substring(1);
- return new FileFilter() {
- public boolean accept(File file) {
- return fileFitsFilterMode(file,mode) && file.getName().toLowerCase().endsWith(condStr) ;
- }
- };
- }
- //##### Filter definiert den genauen Dateinamen #####
- final String condStr = filterStr;
- return new FileFilter() {
- public boolean accept(File file) {
- return fileFitsFilterMode(file,mode) && file.getName().equalsIgnoreCase(condStr) ;
- }
- };
- }
+ int delCount = 0;
+ // Dateien im aktuellen Verzeichnis loeschen
+ File[] files = filter != null ? dir.listFiles(filter) : dir.listFiles();
+ for (File file : files) {
+ // Verzeichnis zunaechst leeren
+ if (file.isDirectory())
+ delCount += deleteFiles(file, null, true, showFiles);
+ boolean success = file.delete();
+ if (success)
+ delCount++;
+ if (showFiles) {
+ StringBuffer message = new StringBuffer(success ? "Deleted: "
+ : "Error: ");
+ try {
+ message.append(file.getCanonicalPath());
+ } catch (Exception err) {
+ message.append(file.getAbsolutePath());
+ }
+ }
+ }
+ // Wenn rekusiv geloescht werden soll, alle Verzeichnisse im Verzeichnis
+ // durchsuchen
+ if (recursive) {
+ File[] directories = dir.listFiles(ALL_DIRS_FILTER);
+ for (File directory : directories)
+ delCount += deleteFiles(directory, filter, recursive, showFiles);
+ }
+ return delCount;
+ }
- /**
- * Loescht Dateien oder Verzeichnisse in einem Verzeichnis. Das Verzeichnis selbst
- * wird dabei NICHT geloescht, auch wenn es am Ende leer ist!
- * @param dir Verzeichnis in dem Dateien/Verzeichnisse geloescht werden
- * @param filter bestimmt, welche Dateien/Verzeichnisse geloescht werden
- * @param recursive wenn {@code true} werden auch alle Dateien/Verzeichnisse
- * in Unterverzeichnissen geloescht, die dem Filter entsprechen
- * @param showFiles wenn {@code true} werden die geloeschten Dateien auf der
- * Console ausgegeben
- * @return Anzahl geloeschter Dateien und Verzeichnisse
- */
- public static int deleteFiles(File dir, FileFilter filter, boolean recursive, boolean showFiles) {
- if ( !dir.isDirectory() )
- return 0;
-
- int delCount = 0;
- // Dateien im aktuellen Verzeichnis loeschen
- File[] files = filter != null ? dir.listFiles( filter ) : dir.listFiles();
- for (File file : files) {
- // Verzeichnis zunaechst leeren
- if ( file.isDirectory() )
- delCount += deleteFiles(file, null, true, showFiles);
- boolean success = file.delete();
- if ( success )
- delCount++;
- if ( showFiles ) {
- StringBuffer message = new StringBuffer(success ? "Deleted: " : "Error: ");
- try {
- message.append( file.getCanonicalPath() );
- } catch (Exception err) {
- message.append( file.getAbsolutePath() );
- }
- }
- }
- // Wenn rekusiv geloescht werden soll, alle Verzeichnisse im Verzeichnis
- // durchsuchen
- if ( recursive ) {
- File[] directories = dir.listFiles(ALL_DIRS_FILTER);
- for (File directory : directories)
- delCount += deleteFiles(directory, filter, recursive, showFiles);
- }
- return delCount;
- }
-
- /**
+ /**
* Die Umwandlung einer URL in ein File-Objekt ist leider nicht trivial.
*
- * @see http
+ * @see http
* ://weblogs.java.net/blog/kohsuke/archive/2007/04/how_to_convert.html
*
* @param url
@@ -513,7 +592,7 @@
* Krüger</a>
*/
public static File urlToFile(URL url) {
-// LOGGER.debug("\nconverting " + url.toString() + " to ");
+ // LOGGER.debug("\nconverting " + url.toString() + " to ");
File f;
try {
f = new File(url.toURI());
@@ -521,40 +600,40 @@
// TODO Here we probably need more cases...
f = new File(url.getPath().replace("%20", " "));
}
-// LOGGER.debug(" to " + f.toString());
+ // LOGGER.debug(" to " + f.toString());
return f;
}
-
- /**
- * Fuehrt verschiedene Funktionen aus.
- * <ul>
- * <li>{@code DELDIR name}<br>
- * Loescht ein Verzeichnis aus allen Unterverzeichnissen.</li>
- * </ul>
- * @param arg
- */
- public static void main(final String[] arg) {
- if ( arg.length == 0 ) {
- System.err.println("Missing arguments.");
- return;
- }
+ /**
+ * Fuehrt verschiedene Funktionen aus.
+ * <ul>
+ * <li>{@code DELDIR name}<br>
+ * Loescht ein Verzeichnis aus allen Unterverzeichnissen.</li>
+ * </ul>
+ *
+ * @param arg
+ */
+ public static void main(final String[] arg) {
+ if (arg.length == 0) {
+ System.err.println("Missing arguments.");
+ return;
+ }
- String func = arg[0].toUpperCase();
- if ( func.equals("DELDIR") ) {
- if ( arg.length < 2 ) {
- System.err.println("Missing arguments for DELDIR.");
- }
- File currDir = new File(".");
- FileFilter filter = createSimpleFileFilter(arg[1],FilterMode.DIR_ONLY);
- int delCount = deleteFiles(currDir, filter, true, true);
- }
- else {
- LOGGER.error("Unknown function: "+func);
- }
- }
+ String func = arg[0].toUpperCase();
+ if (func.equals("DELDIR")) {
+ if (arg.length < 2) {
+ System.err.println("Missing arguments for DELDIR.");
+ }
+ File currDir = new File(".");
+ FileFilter filter = createSimpleFileFilter(arg[1],
+ FilterMode.DIR_ONLY);
+ int delCount = deleteFiles(currDir, filter, true, true);
+ } else {
+ LOGGER.error("Unknown function: " + func);
+ }
+ }
- /**
+ /**
* The method File getTempDir() caches the system's temp direcotry here.
*
* @see #getTempDir()
@@ -568,7 +647,8 @@
* The folder is cached in a static {@link File} field.
*
* @return A {@link File} object pointing to the system's temp directory.
- * This method does some extra checks and returns a valid {@link File}
+ * This method does some extra checks and returns a valid
+ * {@link File}
*
* @see
* <code>http://rationalpi.wordpress.com/2007/01/26/javaiotmpdir-inconsitency/</code>
@@ -579,7 +659,8 @@
String tempPath = System.getProperty("java.io.tmpdir", System
.getenv("TEMP"));
- if (tempPath == null || tempPath.isEmpty() || !new File(tempPath).exists()) {
+ if (tempPath == null || tempPath.isEmpty()
+ || !new File(tempPath).exists()) {
LOGGER.warn("Temporary directory can't be found. Using /tmp");
tempPath = "/tmp";
}
@@ -588,16 +669,17 @@
tempPath = tempPath.substring(0, tempPath.length() - 1);
tempDir = new File(tempPath);
-
- if (!tempDir.exists()) throw new IllegalStateException("Temp direcotory can't be determined.");
+
+ if (!tempDir.exists())
+ throw new IllegalStateException(
+ "Temp direcotory can't be determined.");
}
return tempDir;
}
-
/**
- * Test whether it is possible to access the given URL.
+ * Test whether it is possible to access the given URL.
*/
public static boolean urlExists(final URL url) {
try {
@@ -620,9 +702,45 @@
public static String readFileAsString(File file) throws java.io.IOException {
byte[] buffer = new byte[(int) file.length()];
FileInputStream f = new FileInputStream(file);
- f.read(buffer);
- return new String(buffer);
+ try {
+ f.read(buffer);
+ return new String(buffer);
+ } finally {
+ f.close();
+ }
}
+ /**
+ * @return a {@link String} with the content of the {@link URL}. Do not use
+ * this on long files! Returns <code>null</code> if an erro occured.
+ */
+ public static String readURLasString(URL url) {
+ try {
+ InputStream openStream = url.openStream();
+ try {
+
+ InputStreamReader inStream = new InputStreamReader(openStream);
+ try {
+
+ BufferedReader inReader = new BufferedReader(inStream);
+ try {
+ String content = inReader.readLine();
+ return content;
+ } finally {
+ inReader.close();
+ }
+
+ } finally {
+ inStream.close();
+ }
+ } finally {
+ openStream.close();
+ }
+ } catch (IOException e) {
+ LOGGER.error("getURLasString " + url, e);
+ }
+ return null;
+ }
+
}
More information about the Schmitzm-commits
mailing list