Package org.kapott.hbci.tools

## Class IOUtils

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

    public class IOUtils
    extends java.lang.Object

Hilfsfunktionen fuer IO-Operationen.

### Constructor Summary

Constructors
`IOUtils()`

### Method Summary

All Methods Static Methods Concrete Methods
`static void` `close​(java.io.Closeable c)` Schliesst das Closeable, ohne eine Exception zu werfen.
`static long` `copy​(java.io.InputStream is, java.io.OutputStream os)` Kopiert die Daten aus dem InputStream in den OutputStream.
`static byte[]` `read​(java.io.InputStream is)` Liest die Datei komplett in das Byte-Array.
`static java.lang.String` `safeFilename​(java.lang.String filename)` Prueft, ob ein Dateipfad ungueltige Zeichen enthaelt oder zu lang ist und kuerzt ihn automatisch.
`static void` `safeReplace​(java.io.File origFile, java.io.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 Detail

#### IOUtils

    public IOUtils()

### Method Detail

#### safeReplace

    public static void safeReplace​(java.io.File origFile,
                                   java.io.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​(java.io.InputStream is,
                            java.io.OutputStream os)
                     throws java.io.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:
  `java.io.IOException`

#### read

    public static byte[] read​(java.io.InputStream is)
                       throws java.io.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:
  `java.io.IOException`

#### close

    public static void close​(java.io.Closeable c)

Schliesst das Closeable, ohne eine Exception zu werfen. Auch dann nicht, wenn c NULL ist.

Parameters:
  `c` - das Closeable.

#### safeFilename

    public static java.lang.String safeFilename​(java.lang.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.