view src/goodjava/io/IoUtils.java @ 1503:74c534de211f

use InheritableThreadLocal in ThreadLocalAppender
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 10 May 2020 23:28:16 -0600
parents e66e3d50b289
children d80395468b4e
line wrap: on
line source

package goodjava.io;

import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.IOException;
import java.nio.file.Files;


public final class IoUtils {
	private IoUtils() {}  // never

	public static void move( File from, File to ) throws IOException {
		Files.move( from.toPath(), to.toPath() );
	}

	public static void delete(File file) throws IOException {
		Files.deleteIfExists( file.toPath() );
	}

	public static void mkdirs(File file) throws IOException {
		Files.createDirectories( file.toPath() );
	}

	public static boolean isSymbolicLink(File file) {
		return Files.isSymbolicLink(file.toPath());
	}

	public static void deleteRecursively(File file) throws IOException {
		if( file.isDirectory() && !isSymbolicLink(file) ) {
			for( File f : file.listFiles() ) {
				deleteRecursively(f);
			}
		}
		delete(file);
	}

	public static void link(File existing,File link) throws IOException {
		Files.createLink( link.toPath(), existing.toPath() );
	}

	public static void symlink(File existing,File link) throws IOException {
		Files.createSymbolicLink( link.toPath(), existing.toPath() );
	}

	public static void copyAll(InputStream in,OutputStream out)
		throws IOException
	{
		byte[] a = new byte[8192];
		int n;
		while( (n=in.read(a)) != -1 ) {
			out.write(a,0,n);
		}
		in.close();
	}

}