A comprehensive Java utility library providing static method wrappers for common operations to reduce API learning costs and improve development efficiency
—
Comprehensive file and I/O utilities through FileUtil and IoUtil classes, providing file operations, stream handling, and resource management.
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.io.ResourceUtil;
import cn.hutool.core.io.NioUtil;// Read file content as string
public static String readUtf8String(File file);
public static String readString(File file, Charset charset);
public static String readString(String path);
// Read as bytes
public static byte[] readBytes(File file);
public static byte[] readBytes(String path);
// Read as lines
public static List<String> readUtf8Lines(File file);
public static List<String> readLines(File file, Charset charset);// Write string content
public static File writeUtf8String(String content, File file);
public static File writeString(String content, File file, Charset charset);
public static File writeString(String content, String path, Charset charset);
// Write bytes
public static File writeBytes(byte[] data, File file);
public static File writeBytes(byte[] data, String path);
// Append content
public static File appendUtf8String(String content, File file);
public static File appendString(String content, File file, Charset charset);Usage Examples:
// Read file content
String content = FileUtil.readUtf8String("config.txt");
byte[] data = FileUtil.readBytes("image.jpg");
List<String> lines = FileUtil.readUtf8Lines("data.csv");
// Write file content
FileUtil.writeUtf8String("Hello World", "greeting.txt");
FileUtil.writeBytes(imageData, "output.jpg");
// Append to file
FileUtil.appendUtf8String("\nNew line", "log.txt");// Create files and directories
public static File touch(File file);
public static File touch(String fullFilePath);
public static File mkdir(String dirPath);
public static File mkdir(File dir);
// Delete operations
public static boolean del(File file);
public static boolean del(String fullFileOrDirPath);
public static boolean clean(File directory);// Copy operations
public static File copy(File src, File dest, boolean isOverride);
public static File copy(String srcPath, String destPath, boolean isOverride);
// Move operations
public static File move(File src, File dest, boolean isOverride);
public static File move(String srcPath, String destPath, boolean isOverride);
// Rename
public static File rename(File file, String newName, boolean isOverride);Usage Examples:
// Create file and directories
File newFile = FileUtil.touch("data/output.txt"); // Creates parent dirs if needed
File newDir = FileUtil.mkdir("reports/2023");
// Copy files
FileUtil.copy("source.txt", "backup/source.txt", true);
FileUtil.copy(new File("data.csv"), new File("archive/data.csv"), false);
// Move and rename
FileUtil.move("temp.txt", "final.txt", true);
FileUtil.rename(new File("old-name.txt"), "new-name.txt", false);// File existence and type
public static boolean exist(File file);
public static boolean exist(String path);
public static boolean isDirectory(File file);
public static boolean isFile(File file);
// File size
public static long size(File file);
public static String readableFileSize(long size);
// File time
public static Date lastModifiedTime(File file);
public static File setLastModifiedTime(File file, Date time);// Get file name parts
public static String getName(File file);
public static String getName(String filePath);
public static String mainName(File file); // without extension
public static String mainName(String fileName);
public static String extName(File file); // extension only
public static String extName(String fileName);
// Path operations
public static String getParent(File file, int level);
public static String normalize(String path);
public static String getAbsolutePath(File file);// Copy streams
public static long copy(InputStream in, OutputStream out);
public static long copy(InputStream in, OutputStream out, int bufferSize);
public static long copy(Reader reader, Writer writer);
// Read from streams
public static String read(InputStream in, Charset charset);
public static String read(Reader reader);
public static byte[] readBytes(InputStream in);
// Write to streams
public static void write(OutputStream out, boolean isCloseOut, byte[] content);
public static void write(Writer writer, boolean isCloseWriter, String content);// Convert between stream types
public static BufferedInputStream toBuffered(InputStream in);
public static BufferedOutputStream toBuffered(OutputStream out);
public static BufferedReader toBuffered(Reader reader);
public static BufferedWriter toBuffered(Writer writer);
// Stream to collections
public static List<String> readLines(InputStream in, Charset charset);
public static <T> List<T> readObj(InputStream in);Usage Examples:
// Copy streams with automatic resource management
try (FileInputStream fis = new FileInputStream("input.txt");
FileOutputStream fos = new FileOutputStream("output.txt")) {
long bytesCopied = IoUtil.copy(fis, fos);
System.out.println("Copied " + bytesCopied + " bytes");
}
// Read from URL
try (InputStream in = new URL("https://example.com/data.json").openStream()) {
String json = IoUtil.read(in, CharsetUtil.UTF_8);
// Process JSON data
}// Get resource streams
public static InputStream getStream(String resource);
public static InputStream getStreamSafe(String resource);
// Read resource content
public static String readUtf8Str(String resource);
public static String readStr(String resource, Charset charset);
public static byte[] readBytes(String resource);
// Get resource URLs and files
public static URL getResource(String resource);
public static File getResourceObj(String resource);// Close resources safely
public static void close(Closeable closeable);
public static void closeQuietly(Closeable... closeables);
// Try-with-resources utilities
public static <T> T readThenClose(InputStream in, Function<InputStream, T> reader);Usage Examples:
// Read classpath resources
String config = ResourceUtil.readUtf8Str("application.properties");
byte[] templateData = ResourceUtil.readBytes("templates/email.html");
// Safe resource handling
InputStream inputStream = null;
try {
inputStream = ResourceUtil.getStream("data.xml");
// Process stream
} finally {
IoUtil.closeQuietly(inputStream);
}
// Functional approach
String data = IoUtil.readThenClose(
new FileInputStream("large-file.txt"),
stream -> IoUtil.read(stream, CharsetUtil.UTF_8)
);// NIO file operations
public static String readUtf8(Path path);
public static byte[] readBytes(Path path);
public static List<String> readAllLines(Path path, Charset charset);
// NIO write operations
public static Path writeUtf8(Path path, String content);
public static Path write(Path path, byte[] bytes);
public static Path write(Path path, Iterable<String> lines, Charset charset);// Channel copying
public static long copy(ReadableByteChannel src, WritableByteChannel dest);
public static long copy(FileChannel src, FileChannel dest);
// Direct memory operations
public static ByteBuffer read(FileChannel channel, long position, int size);// Watch for file changes
public static WatchMonitor watchDir(File dir, WatchKind[] events, Watcher watcher);
public static WatchMonitor watchFile(File file, Watcher watcher);// List files with filters
public static List<File> ls(String path);
public static File[] ls(File file);
public static List<File> listFileNames(File dir, String... suffixes);
// Find files
public static List<File> loopFiles(File file, FileFilter fileFilter);
public static List<File> loopFiles(String path, int maxDepth, FileFilter fileFilter);// Path joining and normalization
public static String join(String parent, String... paths);
public static File file(String path);
public static File file(File parent, String... paths);
// Check path types
public static boolean isAbsolutePath(String path);
public static boolean isWindows();
public static boolean isLinux();Usage Examples:
// List and filter files
List<File> javaFiles = FileUtil.loopFiles("src/main/java",
file -> file.getName().endsWith(".java"));
// Path operations
String fullPath = FileUtil.join("home", "user", "documents", "file.txt");
File configFile = FileUtil.file("conf", "application.yml");
// File monitoring
WatchMonitor monitor = FileUtil.watchDir(new File("./logs"),
new WatchKind[]{WatchKind.CREATE, WatchKind.MODIFY},
new SimpleWatcher() {
@Override
public void onCreate(WatchEvent<?> event, Path currentPath) {
System.out.println("New file created: " + currentPath);
}
});
monitor.start();All file and I/O operations handle exceptions gracefully and provide both checked and unchecked variants. The utilities support cross-platform file operations and handle path separators, encodings, and resource cleanup automatically.
Install with Tessl CLI
npx tessl i tessl/maven-cn-hutool--hutool-all