原文参考
http://www.javacodegeeks.com/2014/10/apache-commons-io-tutorial.html
Apache Commons IO 包绝对是好东西,地址在http://commons.apache.org/proper/commons-io/,下面用例子分别介绍:
1) 工具类
2) 输入
3) 输出
4) filters过滤
5) Comparators
6) 文件监控
总的入口例子为:
- public class ApacheCommonsExampleMain {
- public static void main(String[] args) {
- UtilityExample.runExample();
- FileMonitorExample.runExample();
- FiltersExample.runExample();
- InputExample.runExample();
- OutputExample.runExample();
- ComparatorExample.runExample();
- }
- }
一 工具类包UtilityExample代码:
这个工具类包分如下几个主要工具类:
1) FilenameUtils:主要处理各种操作系统下对文件名的操作
2) FileUtils:处理文件的打开,移动,读取和判断文件是否存在
3) IOCASE:字符串的比较
4) FileSystemUtils:返回磁盘的空间大小
- import java.io.File;
- import java.io.IOException;
- import org.apache.commons.io.FileSystemUtils;
- import org.apache.commons.io.FileUtils;
- import org.apache.commons.io.FilenameUtils;
- import org.apache.commons.io.LineIterator;
- import org.apache.commons.io.IOCase;
- public final class UtilityExample {
- // We are using the file exampleTxt.txt in the folder ExampleFolder,
- // and we need to provide the full path to the Utility classes.
- private static final String EXAMPLE_TXT_PATH =
- "C:\\Users\\Lilykos\\workspace\\ApacheCommonsExample\\ExampleFolder\\exampleTxt.txt";
- private static final String PARENT_DIR =
- "C:\\Users\\Lilykos\\workspace\\ApacheCommonsExample";
- public static void runExample() throws IOException {
- System.out.println("Utility Classes example...");
- // FilenameUtils
- System.out.println("Full path of exampleTxt: " +
- FilenameUtils.getFullPath(EXAMPLE_TXT_PATH));
- System.out.println("Full name of exampleTxt: " +
- FilenameUtils.getName(EXAMPLE_TXT_PATH));
- System.out.println("Extension of exampleTxt: " +
- FilenameUtils.getExtension(EXAMPLE_TXT_PATH));
- System.out.println("Base name of exampleTxt: " +
- FilenameUtils.getBaseName(EXAMPLE_TXT_PATH));
- // FileUtils
- // We can create a new File object using FileUtils.getFile(String)
- // and then use this object to get information from the file.
- File exampleFile = FileUtils.getFile(EXAMPLE_TXT_PATH);
- LineIterator iter = FileUtils.lineIterator(exampleFile);
- System.out.println("Contents of exampleTxt...");
- while (iter.hasNext()) {
- System.out.println("\t" + iter.next());
- }
- iter.close();
- // We can check if a file exists somewhere inside a certain directory.
- File parent = FileUtils.getFile(PARENT_DIR);
- System.out.println("Parent directory contains exampleTxt file: " +
- FileUtils.directoryContains(parent, exampleFile));
- // IOCase
- String str1 = "This is a new String.";
- String str2 = "This is another new String, yes!";
- System.out.println("Ends with string (case sensitive): " +
- IOCase.SENSITIVE.checkEndsWith(str1, "string."));
- System.out.println("Ends with string (case insensitive): " +
- IOCase.INSENSITIVE.checkEndsWith(str1, "string."));
- System.out.println("String equality: " +
- IOCase.SENSITIVE.checkEquals(str1, str2));
- // FileSystemUtils
- System.out.println("Free disk space (in KB): " + FileSystemUtils.freeSpaceKb("C:"));
- System.out.println("Free disk space (in MB): " + FileSystemUtils.freeSpaceKb("C:") / 1024);
- }
- }
输出:
- Utility Classes example...
- Full path of exampleTxt: C:\Users\Lilykos\workspace\ApacheCommonsExample\ExampleFolder\
- Full name of exampleTxt: exampleTxt.txt
- Extension of exampleTxt: txt
- Base name of exampleTxt: exampleTxt
- Contents of exampleTxt...
- This is an example text file.
- We will use it for experimenting with Apache Commons IO.
- Parent directory contains exampleTxt file: true
- Ends with string (case sensitive): false
- Ends with string (case insensitive): true
- String equality: false
- Free disk space (in KB): 32149292
- Free disk space (in MB): 31395
二 FileMonitor工具类包
这个org.apache.commons.io.monitor 包中的工具类可以监视文件或者目录的变化,获得指定文件或者目录的相关信息,下面看例子:
- import java.io.File;
- import java.io.IOException;
- import org.apache.commons.io.FileDeleteStrategy;
- import org.apache.commons.io.FileUtils;
- import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
- import org.apache.commons.io.monitor.FileAlterationMonitor;
- import org.apache.commons.io.monitor.FileAlterationObserver;
- import org.apache.commons.io.monitor.FileEntry;
- public final class FileMonitorExample {
- private static final String EXAMPLE_PATH =
- "C:\\Users\\Lilykos\\workspace\\ApacheCommonsExample\\ExampleFolder\\exampleFileEntry.txt";
- private static final String PARENT_DIR =
- "C:\\Users\\Lilykos\\workspace\\ApacheCommonsExample\\ExampleFolder";
- private static final String NEW_DIR =
- "C:\\Users\\Lilykos\\workspace\\ApacheCommonsExample\\ExampleFolder\\newDir";
- private static final String NEW_FILE =
- "C:\\Users\\Lilykos\\workspace\\ApacheCommonsExample\\ExampleFolder\\newFile.txt";
- public static void runExample() {
- System.out.println("File Monitor example...");
- // FileEntry
- // We can monitor changes and get information about files
- // using the methods of this class.
- FileEntry entry = new FileEntry(FileUtils.getFile(EXAMPLE_PATH));
- System.out.println("File monitored: " + entry.getFile());
- System.out.println("File name: " + entry.getName());
- System.out.println("Is the file a directory?: " + entry.isDirectory());
- // File Monitoring
- // Create a new observer for the folder and add a listener
- // that will handle the events in a specific directory and take action.
- File parentDir = FileUtils.getFile(PARENT_DIR);
- FileAlterationObserver observer = new FileAlterationObserver(parentDir);
- observer.addListener(new FileAlterationListenerAdaptor() {
- @Override
- public void onFileCreate(File file) {
- System.out.println("File created: " + file.getName());
- }
- @Override
- public void onFileDelete(File file) {
- System.out.println("File deleted: " + file.getName());
- }
- @Override
- public void onDirectoryCreate(File dir) {
- System.out.println("Directory created: " + dir.getName());
- }
- @Override
- public void onDirectoryDelete(File dir) {
- System.out.println("Directory deleted: " + dir.getName());
- }
- });
- // Add a monior that will check for events every x ms,
- // and attach all the different observers that we want.
- FileAlterationMonitor monitor = new FileAlterationMonitor(500, observer);
- try {
- monitor.start();
- // After we attached the monitor, we can create some files and directories
- // and see what happens!
- File newDir = new File(NEW_DIR);
- File newFile = new File(NEW_FILE);
- newDir.mkdirs();
- newFile.createNewFile();
- Thread.sleep(1000);
- FileDeleteStrategy.NORMAL.delete(newDir);
- FileDeleteStrategy.NORMAL.delete(newFile);
- Thread.sleep(1000);
- monitor.stop();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (InterruptedException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
输出如下:
- File Monitor example...
- File monitored: C:\Users\Lilykos\workspace\ApacheCommonsExample\ExampleFolder\exampleFileEntry.txt
- File name: exampleFileEntry.txt
- Is the file a directory?: false
- Directory created: newDir
- File created: newFile.txt
- Directory deleted: newDir
- File deleted: newFile.txt
上面的特性的确很赞!分析下,这个工具类包下的工具类,可以允许我们创建跟踪文件或目录变化的监听句柄,当文件目录等发生任何变化,都可以用“观察者”的身份进行观察,
其步骤如下:
1) 创建要监听的文件对象
2) 创建FileAlterationObserver 监听对象,在上面的例子中,
File parentDir = FileUtils.getFile(PARENT_DIR);
FileAlterationObserver observer = new FileAlterationObserver(parentDir);
创建的是监视parentDir目录的变化,
3) 为观察器创建FileAlterationListenerAdaptor的内部匿名类,增加对文件及目录的增加删除的监听
4) 创建FileAlterationMonitor监听类,每隔500ms监听目录下的变化,其中开启监视是用monitor的start方法即可。
三 过滤器 filters
先看例子:
- import java.io.File;
- import org.apache.commons.io.FileUtils;
- import org.apache.commons.io.IOCase;
- import org.apache.commons.io.filefilter.AndFileFilter;
- import org.apache.commons.io.filefilter.NameFileFilter;
- import org.apache.commons.io.filefilter.NotFileFilter;
- import org.apache.commons.io.filefilter.OrFileFilter;
- import org.apache.commons.io.filefilter.PrefixFileFilter;
- import org.apache.commons.io.filefilter.SuffixFileFilter;
- import org.apache.commons.io.filefilter.WildcardFileFilter;
- public final class FiltersExample {
- private static final String PARENT_DIR =
- "C:\\Users\\Lilykos\\workspace\\ApacheCommonsExample\\ExampleFolder";
- public static void runExample() {
- System.out.println("File Filter example...");
- // NameFileFilter
- // Right now, in the parent directory we have 3 files:
- // directory example
- // file exampleEntry.txt
- // file exampleTxt.txt
- // Get all the files in the specified directory
- // that are named "example".
- File dir = FileUtils.getFile(PARENT_DIR);
- String[] acceptedNames = {"example", "exampleTxt.txt"};
- for (String file: dir.list(new NameFileFilter(acceptedNames, IOCase.INSENSITIVE))) {
- System.out.println("File found, named: " + file);
- }
- //WildcardFileFilter
- // We can use wildcards in order to get less specific results
- // ? used for 1 missing char
- // * used for multiple missing chars
- for (String file: dir.list(new WildcardFileFilter("*ample*"))) {
- System.out.println("Wildcard file found, named: " + file);
- }
- // PrefixFileFilter
- // We can also use the equivalent of startsWith
- // for filtering files.
- for (String file: dir.list(new PrefixFileFilter("example"))) {
- System.out.println("Prefix file found, named: " + file);
- }
- // SuffixFileFilter
- // We can also use the equivalent of endsWith
- // for filtering files.
- for (String file: dir.list(new SuffixFileFilter(".txt"))) {
- System.out.println("Suffix file found, named: " + file);
- }
- // OrFileFilter
- // We can use some filters of filters.
- // in this case, we use a filter to apply a logical
- // or between our filters.
- for (String file: dir.list(new OrFileFilter(
- new WildcardFileFilter("*ample*"), new SuffixFileFilter(".txt")))) {
- System.out.println("Or file found, named: " + file);
- }
- // And this can become very detailed.
- // Eg, get all the files that have "ample" in their name
- // but they are not text files (so they have no ".txt" extension.
- for (String file: dir.list(new AndFileFilter( // we will match 2 filters...
- new WildcardFileFilter("*ample*"), // ...the 1st is a wildcard...
- new NotFileFilter(new SuffixFileFilter(".txt"))))) { // ...and the 2nd is NOT .txt.
- System.out.println("And/Not file found, named: " + file);
- }
- }
- }
可以看清晰看到,使用过滤器,可以分别在指定的目录下,寻找符合条件
的文件,比如以什么开头的文件名,支持通配符,甚至支持多个过滤器进行或的操作!
输出如下:
- File Filter example...
- File found, named: example
- File found, named: exampleTxt.txt
- Wildcard file found, named: example
- Wildcard file found, named: exampleFileEntry.txt
- Wildcard file found, named: exampleTxt.txt
- Prefix file found, named: example
- Prefix file found, named: exampleFileEntry.txt
- Prefix file found, named: exampleTxt.txt
- Suffix file found, named: exampleFileEntry.txt
- Suffix file found, named: exampleTxt.txt
- Or file found, named: example
- Or file found, named: exampleFileEntry.txt
- Or file found, named: exampleTxt.txt
- And/Not file found, named: example
四 Comparators比较器
org.apache.commons.io.comparator包下的工具类,可以方便进行文件的比较:
- import java.io.File;
- import java.util.Date;
- import org.apache.commons.io.FileUtils;
- import org.apache.commons.io.IOCase;
- import org.apache.commons.io.comparator.LastModifiedFileComparator;
- import org.apache.commons.io.comparator.NameFileComparator;
- import org.apache.commons.io.comparator.SizeFileComparator;
- public final class ComparatorExample {
- private static final String PARENT_DIR =
- "C:\\Users\\Lilykos\\workspace\\ApacheCommonsExample\\ExampleFolder";
- private static final String FILE_1 =
- "C:\\Users\\Lilykos\\workspace\\ApacheCommonsExample\\ExampleFolder\\example";
- private static final String FILE_2 =
- "C:\\Users\\Lilykos\\workspace\\ApacheCommonsExample\\ExampleFolder\\exampleTxt.txt";
- public static void runExample() {
- System.out.println("Comparator example...");
- //NameFileComparator
- // Let's get a directory as a File object
- // and sort all its files.
- File parentDir = FileUtils.getFile(PARENT_DIR);
- NameFileComparator comparator = new NameFileComparator(IOCase.SENSITIVE);
- File[] sortedFiles = comparator.sort(parentDir.listFiles());
- System.out.println("Sorted by name files in parent directory: ");
- for (File file: sortedFiles) {
- System.out.println("\t"+ file.getAbsolutePath());
- }
- // SizeFileComparator
- // We can compare files based on their size.
- // The boolean in the constructor is about the directories.
- // true: directory's contents count to the size.
- // false: directory is considered zero size.
- SizeFileComparator sizeComparator = new SizeFileComparator(true);
- File[] sizeFiles = sizeComparator.sort(parentDir.listFiles());
- System.out.println("Sorted by size files in parent directory: ");
- for (File file: sizeFiles) {
- System.out.println("\t"+ file.getName() + " with size (kb): " + file.length());
- }
- // LastModifiedFileComparator
- // We can use this class to find which file was more recently modified.
- LastModifiedFileComparator lastModified = new LastModifiedFileComparator();
- File[] lastModifiedFiles = lastModified.sort(parentDir.listFiles());
- System.out.println("Sorted by last modified files in parent directory: ");
- for (File file: lastModifiedFiles) {
- Date modified = new Date(file.lastModified());
- System.out.println("\t"+ file.getName() + " last modified on: " + modified);
- }
- // Or, we can also compare 2 specific files and find which one was last modified.
- // returns > 0 if the first file was last modified.
- // returns 0)
- System.out.println("File " + file1.getName() + " was modified last because...");
- else
- System.out.println("File " + file2.getName() + "was modified last because...");
- System.out.println("\t"+ file1.getName() + " last modified on: " +
- new Date(file1.lastModified()));
- System.out.println("\t"+ file2.getName() + " last modified on: " +
- new Date(file2.lastModified()));
- }
- }
输出如下:
- Comparator example...
- Sorted by name files in parent directory:
- C:\Users\Lilykos\workspace\ApacheCommonsExample\ExampleFolder\comparator1.txt
- C:\Users\Lilykos\workspace\ApacheCommonsExample\ExampleFolder\comperator2.txt
- C:\Users\Lilykos\workspace\ApacheCommonsExample\ExampleFolder\example
- C:\Users\Lilykos\workspace\ApacheCommonsExample\ExampleFolder\exampleFileEntry.txt
- C:\Users\Lilykos\workspace\ApacheCommonsExample\ExampleFolder\exampleTxt.txt
- Sorted by size files in parent directory:
- example with size (kb): 0
- exampleTxt.txt with size (kb): 87
- exampleFileEntry.txt with size (kb): 503
- comperator2.txt with size (kb): 1458
- comparator1.txt with size (kb): 4436
- Sorted by last modified files in parent directory:
- exampleTxt.txt last modified on: Sun Oct 26 14:02:22 EET 2014
- example last modified on: Sun Oct 26 23:42:55 EET 2014
- comparator1.txt last modified on: Tue Oct 28 14:48:28 EET 2014
- comperator2.txt last modified on: Tue Oct 28 14:48:52 EET 2014
- exampleFileEntry.txt last modified on: Tue Oct 28 14:53:50 EET 2014
- File example was modified last because...
- example last modified on: Sun Oct 26 23:42:55 EET 2014
- exampleTxt.txt last modified on: Sun Oct 26 14:02:22 EET 2014
可以看到,在上面的代码中
NameFileComparator: 文件名的比较器,可以进行文件名称排序;
SizeFileComparator: 按照文件大小比较
LastModifiedFileComparator: 根据最新修改日期比较
五 input包
在 common io的org.apache.commons.io.input 包中,有各种对InputStream的实现类:
我们看下其中的TeeInputStream, ,它接受InputStream和Outputstream参数,例子如下:
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import java.io.IOException;
- import org.apache.commons.io.FileUtils;
- import org.apache.commons.io.input.TeeInputStream;
- import org.apache.commons.io.input.XmlStreamReader;
- public final class InputExample {
- private static final String XML_PATH =
- "C:\\Users\\Lilykos\\workspace\\ApacheCommonsExample\\InputOutputExampleFolder\\web.xml";
- private static final String INPUT = "This should go to the output.";
- public static void runExample() {
- System.out.println("Input example...");
- XmlStreamReader xmlReader = null;
- TeeInputStream tee = null;
- try {
- // XmlStreamReader
- // We can read an xml file and get its encoding.
- File xml = FileUtils.getFile(XML_PATH);
- xmlReader = new XmlStreamReader(xml);
- System.out.println("XML encoding: " + xmlReader.getEncoding());
- // TeeInputStream
- // This very useful class copies an input stream to an output stream
- // and closes both using only one close() method (by defining the 3rd
- // constructor parameter as true).
- ByteArrayInputStream in = new ByteArrayInputStream(INPUT.getBytes("US-ASCII"));
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- tee = new TeeInputStream(in, out, true);
- tee.read(new byte[INPUT.length()]);
- System.out.println("Output stream: " + out.toString());
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- try { xmlReader.close(); }
- catch (IOException e) { e.printStackTrace(); }
- try { tee.close(); }
- catch (IOException e) { e.printStackTrace(); }
- }
- }
- }
输出:
- Input example...
- XML encoding: UTF-8
- Output stream: This should go to the output.
tee = new TeeInputStream(in, out, true);
中,分别三个参数,将输入流的内容输出到输出流,true参数为最后关闭流
六 output工具类包
其中的org.apache.commons.io.output 是实现了outputstream,其中好特别的是
TeeOutputStream能将一个输入流分别输出到两个输出流
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- import org.apache.commons.io.input.TeeInputStream;
- import org.apache.commons.io.output.TeeOutputStream;
- public final class OutputExample {
- private static final String INPUT = "This should go to the output.";
- public static void runExample() {
- System.out.println("Output example...");
- TeeInputStream teeIn = null;
- TeeOutputStream teeOut = null;
- try {
- // TeeOutputStream
- ByteArrayInputStream in = new ByteArrayInputStream(INPUT.getBytes("US-ASCII"));
- ByteArrayOutputStream out1 = new ByteArrayOutputStream();
- ByteArrayOutputStream out2 = new ByteArrayOutputStream();
- teeOut = new TeeOutputStream(out1, out2);
- teeIn = new TeeInputStream(in, teeOut, true);
- teeIn.read(new byte[INPUT.length()]);
- System.out.println("Output stream 1: " + out1.toString());
- System.out.println("Output stream 2: " + out2.toString());
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- // No need to close teeOut. When teeIn closes, it will also close its
- // Output stream (which is teeOut), which will in turn close the 2
- // branches (out1, out2).
- try { teeIn.close(); }
- catch (IOException e) { e.printStackTrace(); }
- }
- }
- }
输出:
- Output example...
- Output stream 1: This should go to the output.
- Output stream 2: This should go to the output.
完整代码下载:http://a3ab771892fd198a96736e50.javacodegeeks.netdna-cdn.com/wp-content/uploads/2014/10/ApacheCommonsIOExample.rar
相关推荐
标题中的“common-io监听文件夹并发送rabbitmq”是指使用Java的Apache Commons IO库来监控一个文件夹的变化,一旦文件夹内有文件新增、修改或删除等事件发生,就会触发相应的处理逻辑,将这些变化通过RabbitMQ消息...
Apache Commons IO 是一个Java库,专注于提供各种I/O操作的实用工具类,这些操作包括文件、流、过滤器、读写、转换、检测等。在本案例中,我们讨论的是"commons-io-2.4"版本,这个版本包含了完整的Apache Commons IO...
在`commons-io-1.4-bin.zip`中,包含了编译后的`common-io.jar`文件,可以直接在项目中使用。而`commons-io-1.4-src.zip`则包含了源代码,对于开发者来说,查看源码可以帮助理解和学习库的内部实现。 总的来说,...
Apache Commons IO库(common-io)是一个专注于I/O操作的实用工具集,提供了大量的静态方法来处理文件、流、过滤器、读写操作等。其中包含的功能有: 1. 文件操作:如创建、复制、移动、删除文件,以及检查文件属性...
1. **文件操作**:Apache Commons IO提供了大量用于文件操作的方法,如创建、删除、移动、复制文件和目录,以及检查文件是否存在、是否可读、可写等。例如,`FileUtils.copyFile()`和`FileUtils.moveFile()`方法使得...
Commons IO 是 Apache Software Foundation 开发的一个 Java 库,它的核心组件是 `commons-io-2.6.jar`。这个版本的 JAR 文件包含了丰富的输入/输出流、文件操作、I/O 流工具类以及与文件系统交互的相关功能。下面将...
Apache Commons IO 是一个Java库,专门设计用于处理输入/输出(I/O)操作。这个库提供了大量的实用工具类,简化了常见的I/O任务,使开发者能够更高效、更方便地处理文件、字节流、字符流以及各种I/O相关的操作。 在 ...
1. 文件操作:包括文件的创建、复制、移动、删除、比较等。 2. 流操作:支持对输入流、输出流的读写,以及转换操作。 3. 字符集:提供了对字符集的支持,便于在不同编码间进行转换。 4. 文件观察:可以监听文件系统...
1. **文件操作**:提供了大量的静态方法来操作文件,如创建、删除、复制、移动、比较文件等。例如,`FileUtils.copyFile()`可以方便地复制文件,而`FileUtils.moveFile()`则用于移动或重命名文件。 2. **流操作**:...
3. **文件比较**:可以比较文件内容是否相同,或者根据日期、大小等属性进行比较。 4. **字符集转换**:处理不同字符编码的文件,如读取或写入非UTF-8编码的文件。 5. **文件观察**:监听文件系统的变化,例如文件...
6. **FilenameUtils**: 处理文件名和路径的工具类,包括获取文件扩展名、合并路径等。 7. **DirectoryWalker**: 这是一个抽象类,用于实现递归遍历目录树的算法,可以方便地在指定目录及其子目录中查找特定文件。 ...
Apache Commons IO 提供了一系列与 I/O 相关的工具类,涵盖了文件、流、过滤器、读写、转换、字符集、系统属性等方面。例如: - `FileUtils` 类提供了一系列静态方法用于文件和目录的操作,如复制、移动、删除等。 ...
1. 文件操作: Commons IO 包含了许多处理文件的方法,如创建、删除、移动和复制文件,以及检查文件的存在、大小、类型等属性。 2. 流操作:提供了对各种输入/输出流的读写操作,包括缓冲流、转换流、过滤流等,使得...
Apache Commons IO 提供的`FileAlterationObserver`是一个强大的文件监控工具,它不仅能够监听文件系统的变动,还能设定监控间隔、回调函数等。下面是一个使用`FileAlterationObserver`的例子: ```java import org...
配置文件中包含各种指令,如ServerRoot定义服务器根目录,Listen设置监听端口,VirtualHost用于配置虚拟主机,DocumentRoot指定网站根目录,Directory控制特定目录的访问权限等。 三、模块管理 Apache 2.2支持大量...
在开始之前,我们需要下载Apache Commons项目中的两个库文件,它们是`common-fileupload-1.1.1.jar`和`common-io-1.2.jar`。这两个库文件提供了Java Servlet进行文件上传所需的功能。将它们添加到Java项目的类路径...
这个实例将指导你通过Adobe Flex客户端向服务器端的Java Servlet发送文件,使用Apache Commons FileUpload库处理文件上传过程。 首先,为了实现这个功能,我们需要在服务器端准备Apache Commons库。访问...
- 文件比较:比较两个文件或目录的内容是否相同。 - 数据编码与解码:支持二进制数据的 Base64 和 Hex 编码。 ### 3. Commons Lang Commons Lang 提供了对 Java 基本类型的增强功能,例如: - 字符串操作:格式...
java.lang.RuntimeException: java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.RecordTooLargeException: The request included a message larger than the max message size the server ...
- Apache Commons IO:提供大量实用的IO工具类,如文件拷贝、文件比较、流转换等。 5. **其他工具类**: - `java.util.Random`:生成随机数。 - `java.util.concurrent`:并发工具类,如线程池、同步器、原子...