or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

additional-utilities.mdbean-object-manipulation.mdcollection-utilities.mdcore-string-operations.mdcryptographic-operations.mddatabase-access.mddate-time-handling.mdfile-io-operations.mdhttp-client-operations.mdindex.mdjson-processing.md

file-io-operations.mddocs/

0

# File and IO Operations

1

2

Comprehensive file and I/O utilities through `FileUtil` and `IoUtil` classes, providing file operations, stream handling, and resource management.

3

4

## Import

5

6

```java

7

import cn.hutool.core.io.FileUtil;

8

import cn.hutool.core.io.IoUtil;

9

import cn.hutool.core.io.ResourceUtil;

10

import cn.hutool.core.io.NioUtil;

11

```

12

13

## File Operations

14

15

### File Reading

16

17

```java { .api }

18

// Read file content as string

19

public static String readUtf8String(File file);

20

public static String readString(File file, Charset charset);

21

public static String readString(String path);

22

23

// Read as bytes

24

public static byte[] readBytes(File file);

25

public static byte[] readBytes(String path);

26

27

// Read as lines

28

public static List<String> readUtf8Lines(File file);

29

public static List<String> readLines(File file, Charset charset);

30

```

31

32

### File Writing

33

34

```java { .api }

35

// Write string content

36

public static File writeUtf8String(String content, File file);

37

public static File writeString(String content, File file, Charset charset);

38

public static File writeString(String content, String path, Charset charset);

39

40

// Write bytes

41

public static File writeBytes(byte[] data, File file);

42

public static File writeBytes(byte[] data, String path);

43

44

// Append content

45

public static File appendUtf8String(String content, File file);

46

public static File appendString(String content, File file, Charset charset);

47

```

48

49

**Usage Examples:**

50

51

```java

52

// Read file content

53

String content = FileUtil.readUtf8String("config.txt");

54

byte[] data = FileUtil.readBytes("image.jpg");

55

List<String> lines = FileUtil.readUtf8Lines("data.csv");

56

57

// Write file content

58

FileUtil.writeUtf8String("Hello World", "greeting.txt");

59

FileUtil.writeBytes(imageData, "output.jpg");

60

61

// Append to file

62

FileUtil.appendUtf8String("\nNew line", "log.txt");

63

```

64

65

## File Management

66

67

### File Creation and Deletion

68

69

```java { .api }

70

// Create files and directories

71

public static File touch(File file);

72

public static File touch(String fullFilePath);

73

public static File mkdir(String dirPath);

74

public static File mkdir(File dir);

75

76

// Delete operations

77

public static boolean del(File file);

78

public static boolean del(String fullFileOrDirPath);

79

public static boolean clean(File directory);

80

```

81

82

### File Copying and Moving

83

84

```java { .api }

85

// Copy operations

86

public static File copy(File src, File dest, boolean isOverride);

87

public static File copy(String srcPath, String destPath, boolean isOverride);

88

89

// Move operations

90

public static File move(File src, File dest, boolean isOverride);

91

public static File move(String srcPath, String destPath, boolean isOverride);

92

93

// Rename

94

public static File rename(File file, String newName, boolean isOverride);

95

```

96

97

**Usage Examples:**

98

99

```java

100

// Create file and directories

101

File newFile = FileUtil.touch("data/output.txt"); // Creates parent dirs if needed

102

File newDir = FileUtil.mkdir("reports/2023");

103

104

// Copy files

105

FileUtil.copy("source.txt", "backup/source.txt", true);

106

FileUtil.copy(new File("data.csv"), new File("archive/data.csv"), false);

107

108

// Move and rename

109

FileUtil.move("temp.txt", "final.txt", true);

110

FileUtil.rename(new File("old-name.txt"), "new-name.txt", false);

111

```

112

113

## File Information

114

115

### File Properties

116

117

```java { .api }

118

// File existence and type

119

public static boolean exist(File file);

120

public static boolean exist(String path);

121

public static boolean isDirectory(File file);

122

public static boolean isFile(File file);

123

124

// File size

125

public static long size(File file);

126

public static String readableFileSize(long size);

127

128

// File time

129

public static Date lastModifiedTime(File file);

130

public static File setLastModifiedTime(File file, Date time);

131

```

132

133

### File Name Operations

134

135

```java { .api }

136

// Get file name parts

137

public static String getName(File file);

138

public static String getName(String filePath);

139

public static String mainName(File file); // without extension

140

public static String mainName(String fileName);

141

public static String extName(File file); // extension only

142

public static String extName(String fileName);

143

144

// Path operations

145

public static String getParent(File file, int level);

146

public static String normalize(String path);

147

public static String getAbsolutePath(File file);

148

```

149

150

## Stream Operations

151

152

### Input/Output Stream Utilities

153

154

```java { .api }

155

// Copy streams

156

public static long copy(InputStream in, OutputStream out);

157

public static long copy(InputStream in, OutputStream out, int bufferSize);

158

public static long copy(Reader reader, Writer writer);

159

160

// Read from streams

161

public static String read(InputStream in, Charset charset);

162

public static String read(Reader reader);

163

public static byte[] readBytes(InputStream in);

164

165

// Write to streams

166

public static void write(OutputStream out, boolean isCloseOut, byte[] content);

167

public static void write(Writer writer, boolean isCloseWriter, String content);

168

```

169

170

### Stream Conversion

171

172

```java { .api }

173

// Convert between stream types

174

public static BufferedInputStream toBuffered(InputStream in);

175

public static BufferedOutputStream toBuffered(OutputStream out);

176

public static BufferedReader toBuffered(Reader reader);

177

public static BufferedWriter toBuffered(Writer writer);

178

179

// Stream to collections

180

public static List<String> readLines(InputStream in, Charset charset);

181

public static <T> List<T> readObj(InputStream in);

182

```

183

184

**Usage Examples:**

185

186

```java

187

// Copy streams with automatic resource management

188

try (FileInputStream fis = new FileInputStream("input.txt");

189

FileOutputStream fos = new FileOutputStream("output.txt")) {

190

long bytesCopied = IoUtil.copy(fis, fos);

191

System.out.println("Copied " + bytesCopied + " bytes");

192

}

193

194

// Read from URL

195

try (InputStream in = new URL("https://example.com/data.json").openStream()) {

196

String json = IoUtil.read(in, CharsetUtil.UTF_8);

197

// Process JSON data

198

}

199

```

200

201

## Resource Management

202

203

### Classpath Resources

204

205

```java { .api }

206

// Get resource streams

207

public static InputStream getStream(String resource);

208

public static InputStream getStreamSafe(String resource);

209

210

// Read resource content

211

public static String readUtf8Str(String resource);

212

public static String readStr(String resource, Charset charset);

213

public static byte[] readBytes(String resource);

214

215

// Get resource URLs and files

216

public static URL getResource(String resource);

217

public static File getResourceObj(String resource);

218

```

219

220

### Resource Cleanup

221

222

```java { .api }

223

// Close resources safely

224

public static void close(Closeable closeable);

225

public static void closeQuietly(Closeable... closeables);

226

227

// Try-with-resources utilities

228

public static <T> T readThenClose(InputStream in, Function<InputStream, T> reader);

229

```

230

231

**Usage Examples:**

232

233

```java

234

// Read classpath resources

235

String config = ResourceUtil.readUtf8Str("application.properties");

236

byte[] templateData = ResourceUtil.readBytes("templates/email.html");

237

238

// Safe resource handling

239

InputStream inputStream = null;

240

try {

241

inputStream = ResourceUtil.getStream("data.xml");

242

// Process stream

243

} finally {

244

IoUtil.closeQuietly(inputStream);

245

}

246

247

// Functional approach

248

String data = IoUtil.readThenClose(

249

new FileInputStream("large-file.txt"),

250

stream -> IoUtil.read(stream, CharsetUtil.UTF_8)

251

);

252

```

253

254

## NIO Operations

255

256

### NIO File Operations

257

258

```java { .api }

259

// NIO file operations

260

public static String readUtf8(Path path);

261

public static byte[] readBytes(Path path);

262

public static List<String> readAllLines(Path path, Charset charset);

263

264

// NIO write operations

265

public static Path writeUtf8(Path path, String content);

266

public static Path write(Path path, byte[] bytes);

267

public static Path write(Path path, Iterable<String> lines, Charset charset);

268

```

269

270

### Channel Operations

271

272

```java { .api }

273

// Channel copying

274

public static long copy(ReadableByteChannel src, WritableByteChannel dest);

275

public static long copy(FileChannel src, FileChannel dest);

276

277

// Direct memory operations

278

public static ByteBuffer read(FileChannel channel, long position, int size);

279

```

280

281

## File Watching

282

283

### File Monitor

284

285

```java { .api }

286

// Watch for file changes

287

public static WatchMonitor watchDir(File dir, WatchKind[] events, Watcher watcher);

288

public static WatchMonitor watchFile(File file, Watcher watcher);

289

```

290

291

## Utility Methods

292

293

### File Filtering and Finding

294

295

```java { .api }

296

// List files with filters

297

public static List<File> ls(String path);

298

public static File[] ls(File file);

299

public static List<File> listFileNames(File dir, String... suffixes);

300

301

// Find files

302

public static List<File> loopFiles(File file, FileFilter fileFilter);

303

public static List<File> loopFiles(String path, int maxDepth, FileFilter fileFilter);

304

```

305

306

### Path Utilities

307

308

```java { .api }

309

// Path joining and normalization

310

public static String join(String parent, String... paths);

311

public static File file(String path);

312

public static File file(File parent, String... paths);

313

314

// Check path types

315

public static boolean isAbsolutePath(String path);

316

public static boolean isWindows();

317

public static boolean isLinux();

318

```

319

320

**Usage Examples:**

321

322

```java

323

// List and filter files

324

List<File> javaFiles = FileUtil.loopFiles("src/main/java",

325

file -> file.getName().endsWith(".java"));

326

327

// Path operations

328

String fullPath = FileUtil.join("home", "user", "documents", "file.txt");

329

File configFile = FileUtil.file("conf", "application.yml");

330

331

// File monitoring

332

WatchMonitor monitor = FileUtil.watchDir(new File("./logs"),

333

new WatchKind[]{WatchKind.CREATE, WatchKind.MODIFY},

334

new SimpleWatcher() {

335

@Override

336

public void onCreate(WatchEvent<?> event, Path currentPath) {

337

System.out.println("New file created: " + currentPath);

338

}

339

});

340

monitor.start();

341

```

342

343

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.