Package org.kapott.hbci.tools

# Class IOUtils

java.lang.Object
org.kapott.hbci.tools.IOUtils

public class IOUtils extends Object
Hilfsfunktionen fuer IO-Operationen.

## Constructor Summary

Constructors
Constructor
Description
`IOUtils()`

## Method Summary

Modifier and Type
Method
Description
`static void`
`close(Closeable c)`
Schliesst das Closeable, ohne eine Exception zu werfen.
`static long`
`copy(InputStream is, OutputStream os)`
Kopiert die Daten aus dem InputStream in den OutputStream.
`static byte[]`
`read(InputStream is)`
Liest die Datei komplett in das Byte-Array.
`static String`
`safeFilename(String filename)`
Prueft, ob ein Dateipfad ungueltige Zeichen enthaelt oder zu lang ist und kuerzt ihn automatisch.
`static void`
`safeReplace(File origFile, File tmpFile)`
Ersetzt die Datei origFile gegen tmpFile.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### IOUtils

public IOUtils()

## Method Details

### safeReplace

public static void safeReplace(File origFile, File tmpFile)
Ersetzt die Datei origFile gegen tmpFile. Nach dem Loeschen der Datei origFile wartet die Methode jedoch maximal 20 Sekunden, um sicherzustellen, dass z.Bsp. Virenscanner die Datei wieder losgelassen haben und sie wirklich verschwunden ist, bevor tmpFile auf den Namen von origFile umbenannt wird. Wichtig ist, dass zum Zeitpunkt des Aufrufes dieser Methode alle Streams auf die Dateien bereits geschlossen wurden. Die Schreibvorgaenge auf die Dateien muessen also abgeschlossen sein. Heisst: "os.close()" nicht erst im finally-Block machen sondern VOR dem Aufruf dieser Methode.

Parameters:
  `origFile` - die originale zu ersetzende Datei.
  `tmpFile` - die neue Datei, welche die originale ersetzen soll.

### copy

public static long copy(InputStream is, OutputStream os) throws IOException
Kopiert die Daten aus dem InputStream in den OutputStream.

Parameters:
  `is` - der InputStream. Der InputStream wird nicht geschlossen. Das ist Aufgabe des Aufrufers.
  `os` - der OutputStream.
Returns:
  die Anzahl geschriebener Bytes.
Throws:
  `IOException`

### read

public static byte[] read(InputStream is) throws IOException
Liest die Datei komplett in das Byte-Array.

Parameters:
  `is` - der InputStream. Der InputStream wird nicht geschlossen. Das ist Aufgabe des Aufrufers.
Returns:
  das Byte-Array.
Throws:
  `IOException`

### close

public static void close(Closeable c)
Schliesst das Closeable, ohne eine Exception zu werfen. Auch dann nicht, wenn c NULL ist.

Parameters:
  `c` - das Closeable.

### safeFilename

public static String safeFilename(String filename)
Prueft, ob ein Dateipfad ungueltige Zeichen enthaelt oder zu lang ist und kuerzt ihn automatisch. Siehe https://homebanking-hilfe.de/forum/topic.php?p=138325#real138325 Die Funktion laesst in Dateinamen ausschliesslich Buchstaben, Zahlen, Unterstrich, Bindestrich und Punkt zu. Wenn der Dateiname laenger als 25 Zeichen ist, wuerde er auf 25 Zeichen abgeschnitten.

Parameters:
  `filename` - der zu pruefende Dateiname inclusive Pfad.
Returns:
  der ggf korrigierte Dateiname.