文章参考:https://commons.apache.org/proper/commons-io/javadocs/api-2.5/
1.org.apache.commons.io.IOUtils
Maven引用
<dependency>
<groupId>org.apache.commons.io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
常用方法
copy
:IO流数据复制,从输入流写到输出流中,最大支持2GB
copy(inputstream,outputstream)
copy(inputstream,writer)
copy(inputstream,writer,encoding)
copy(reader,outputstream)
copy(reader,writer)
copy(reader,writer,encoding)
File f = new File(("text1.txt"));//在project中,相对路径的根目录是project的根文件夹,
File t = new File(("text2.txt"));
try {
FileInputStream from = new FileInputStream(f);
FileOutputStream to = new FileOutputStream(t);
IOUtils.copy(from,to);
} catch (IOException e) {
e.printStackTrace();
}
copyLarge
:这个方法适合拷贝较大的数据流,比如2G以上。
read
从一个流中读取内容到byte[]中 或从一个字符流中读取内容到char[]中
read(inputstream,byte[])
read(inputstream,byte[],offset,length)
//offset是buffer的偏移值,length是读取的长度
read(reader,char[])
read(reader,char[],offset,length)
try{
byte[] bytes = new byte[4];
InputStream is = IOUtils.toInputStream("hello world");//返回输入流
IOUtils.read(is, bytes);//从一个流中读取内容 到byte中
System.out.println(new String(bytes));
bytes = new byte[50];
is = IOUtils.toInputStream("hello world");//返回输入流
IOUtils.read(is, bytes, 5, 8);
for(int i=0;i<50;i++){
System.out.print(bytes[i]+" ");
}
System.out.println("");
System.out.println(IOUtils.toString(bytes,"utf8"));
} catch (IOException e) {
e.printStackTrace();
}
/*
hell
0 0 0 0 0 104 101 108 108 111 32 119 111 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
hello wo
*/
readLines
:从流中读取内容,并转换为String的list
readLines(inputstream)
readLines(inputstream,charset)
readLines(inputstream,encoding)
readLines(reader)
try{
InputStream is = new FileInputStream("text1.txt");
List<String> lines = IOUtils.readLines(is);
for(String line : lines){
System.out.println(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
skip
:用于跳过指定长度的流
skip(inputstream,skip_length)
skip(ReadableByteChannel,skip_length)
skip(reader,skip_length)
InputStream is = IOUtils.toInputStream("hello world");
try {
IOUtils.skip(is,4);
System.out.println(IOUtils.toString(is,"utf-8"));
} catch (IOException e) {
e.printStackTrace();
}
}
/*
o world
*/
write
:把数据写入到输出流中
write(byte[] data, OutputStream output)
write(byte[] data, Writer output)
write(byte[] data, Writer output, Charset encoding)
write(byte[] data, Writer output, String encoding)
write(char[] data, OutputStream output)
write(char[] data, OutputStream output, Charset encoding)
write(char[] data, OutputStream output, String encoding)
write(char[] data, Writer output)
write(CharSequence data, OutputStream output)
write(CharSequence data, OutputStream output, Charset encoding)
write(CharSequence data, OutputStream output, String encoding)
write(CharSequence data, Writer output)
write(StringBuffer data, OutputStream output)
write(StringBuffer data, OutputStream output, String encoding)
write(StringBuffer data, Writer output)
write(String data, OutputStream output)
write(String data, OutputStream output, Charset encoding)
write(String data, OutputStream output, String encoding)
write(String data, Writer output)
//文件原来的内容被覆盖
try {
OutputStream os = new FileOutputStream("text2.txt");
IOUtils.write("hello write!",os);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
writeLines
:把string的List写入到输出流中
writeLines(Collection<?> lines, String lineEnding, OutputStream output)
writeLines(Collection<?> lines, String lineEnding, OutputStream output, Charset encoding)
writeLines(Collection<?> lines, String lineEnding, OutputStream output, String encoding)
writeLines(Collection<?> lines, String lineEnding, Writer writer)
//lineEnding 当前行结束字符的常量
List<String> lines = new ArrayList();
lines.add("hello");
lines.add("list");
lines.add("to");
lines.add("file");
OutputStream os = null;
try {
os = new FileOutputStream("text2.txt");
IOUtils.writeLines(lines,IOUtils.LINE_SEPARATOR,os);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
/*
hello
list
to
file
*/
toCharArray
:返回字符数组
toCharArray(InputStream is)
toCharArray(InputStream is, Charset encoding)
toCharArray(InputStream is, String encoding)
toCharArray(Reader input)
toInputStream
:返回输入流
toInputStream(CharSequence input)
toInputStream(CharSequence input, Charset encoding)
toInputStream(CharSequence input, String encoding)
toInputStream(String input)
toInputStream(String input, Charset encoding)
toInputStream(String input, String encoding)
toByteArray
:返回字节数组
toByteArray(InputStream input)
toByteArray(InputStream input, int size)
toByteArray(InputStream input, long size)
toByteArray(Reader input)
toByteArray(Reader input, Charset encoding)
toByteArray(Reader input, String encoding)
toByteArray(String input)
toByteArray(URI uri)
toByteArray(URL url)
toByteArray(URLConnection urlConn)
toString
:返回字符串
toString(byte[] input)
toString(byte[] input, String encoding)
toString(InputStream input)
toString(InputStream input, Charset encoding)
toString(InputStream input, String encoding)
toString(Reader input)
toString(URI uri)
toString(URI uri, Charset encoding)
toString(URI uri, String encoding)
toString(URL url)
toString(URL url, Charset encoding)
toString(URL url, String encoding)
closeQuietly
:关闭一个IO流、socket、或者selector且不抛出异常,通常放在finally块
2.org.apache.commons.io.FileUtils
Maven引用
<dependency>
<groupId>org.apache.commons.io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
常用方法
deleteDirectory
:以递归方式删除目录。
void deleteDirectory(File directory)
示例
FileUtils.deleteDirectory(new File("/test"));//删除目录下所有的内容
readFileToString
:将文件内容读入String。
String readFileToString(File file,Charset encoding)
示例
String str = FileUtils.readFileToString(new File("text1.txt"),"utf-8");
System.out.println(str);
/*
Hello world
Hello java
*/
copyFile
:复制文件
void copyFile(File srcFile, File destFile)
//如果副本的文件日期应与原始文件相同,则preserveFileDate为true
void copyFile(File srcFile, File destFile, boolean preserveFileDate)
//将字节从File复制到OutputStream。
long copyFile(File input, OutputStream output)
示例
FileUtils.copyFile(new File("text1.txt"),new File("text3.txt"));
writeStringToFile
:把字符写到目标文件,如果文件不存在,则创建
void writeStringToFile(File file, String data, Charset encoding)
//如果append为true,那么String将被添加到文件的末尾而不是覆盖
void writeStringToFile(File file, String data, Charset encoding, boolean append)
示例
FileUtils.writeStringToFile(new File("text1.txt"),"hello spring boot","utf-8");
write
:把字符写到指定文件中
CharSequence类是java.lang包下的一个接口,此接口对多种不同的对char访问的统一接口
像String、StringBuffer、StringBuilder类都是CharSequence的子接口;
CharSequence类和String类都可以定义字符串,但是String定义的字符串只能读,CharSequence定义的字符串是可读可写的;
对于抽象类或者接口来说不可以直接使用new的方式创建对象,但是可以直接给它赋值;
static void write(File file, CharSequence data, Charset encoding)
//如果append为true,那么data将被添加到文件的末尾而不是覆盖
static void write(File file, CharSequence data, Charset encoding, boolean append)
示例
CharSequence str = "我们不一样";
FileUtils.write(new File("text1.txt"),str,"utf-8",true);
listFiles
:列举某个目录下的文件(根据过滤器)
Collection<File> listFiles(File directory, IOFileFilter fileFilter, IOFileFilter dirFilter)
//查找与扩展数组匹配(可以是正则表达式)的给定目录(以及可选的子目录)中的文件。
Collection<File> listFiles(File directory, String[] extensions, boolean recursive)
示例
File dir = new File("E:\\平时练习");
//找出文件下所有.txt 不递归
Collection<File> listFiles = FileUtils.listFiles(dir, new String[]{"txt"}, false);
//找出文件下所有文件 不递归
Collection<File> listFiles = FileUtils.listFiles(dir,null, false);
for (File temp : listFiles)
System.out.println(temp.getName());
copyDirectory
:复制文件夹目录
void copyDirectory(File srcDir, File destDir)
void copyDirectory(File srcDir, File destDir, boolean preserveFileDate)
void copyDirectory(File srcDir, File destDir, FileFilter filter)
void copyDirectory(File srcDir, File destDir, FileFilter filter, boolean preserveFileDate)
void copyDirectoryToDirectory(File srcDir, File destDir)
文件过滤
public class MP3FileFilter implements FileFilter {
@Override
public boolean accept(File file) {
if(file.isDirectory())
return true;
else
{
String name = file.getName();
if(name.endsWith(".mp3") || name.endsWith(".mp4"))
return true;
else
return false;
}
}
}
示例
FileUtils.copyDirectory(new File("D:\\17"),new File("C:\\18"),new Mp3Filter());
forceDelete
:强制删除文件
void forceDelete(File file)
示例
FileUtils.forceDelete(new File("text3.txt"));
3.org.apache.commons.lang.StringUtils
Maven引用
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
常用方法
isBlank
:字符串是否为空 (trim后判断)
isEmpty
:字符串是否为空 (不trim并判断)
CharSequence str = " ";
String str2 = new String(" ");
System.out.println(StringUtils.isBlank(str));
System.out.println(StringUtils.isEmpty(str));
System.out.println(StringUtils.isBlank(str2));
System.out.println(StringUtils.isEmpty(str2));
/*
true
false
true
false
*/
equals
:字符串是否相等 (不trim)
CharSequence str = "";
String str2 = new String(" ");
System.out.println(StringUtils.equals(str,str2));
// false
join
:合并数组为单一字符串,可传分隔符
StringUtils.join([1, 2, 3], ';') = "1;2;3"
StringUtils.join([1, 2, 3], null) = "123"
split
:分割字符串
StringUtils.split("abc def") = ["abc", "def"]
StringUtils.split("abc def") = ["abc", "def"]
StringUtils.split(" abc ") = ["abc"]
StringUtils.split("a.b.c", '.') = ["a", "b", "c"]
StringUtils.split("a..b.c", '.') = ["a", "b", "c"]
StringUtils.split("a:b:c", '.') = ["a:b:c"]
trimToNull
trim后为空字符串则转换为null
System.out.println(StringUtils.trimToNull(" "));
//null
StringUtils.trimToNull(null) = null
replace
:替换字符串
String replace(String text, String searchString, String replacement)
示例
StringUtils.replace("aba", "a", null) = "aba"
StringUtils.replace("abaa", "a", "z", 1) = "zbaa"
capitalize
:首字符大写
StringUtils.capitalize("cat") = "Cat"
StringUtils.capitalize("cAt") = "CAt"
4.org.apache.commons.lang.ArrayUtils
Maven引用
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
常用方法
contains
:检查值是否在给定数组中。
int[] array = {1,2,3};
System.out.println(ArrayUtils.contains(array,1));
addAll
:添加整个数组
int[] array = {1,2,3};
int[] array2 = null;
array2 = ArrayUtils.addAll(array, new int[]{5,6,7});
System.out.println(ArrayUtils.toString(array2));
//{1,2,3,5,6,7}
clone
克隆一个数组
isEmpty
是否空数组
add
向数组添加元素
ArrayUtils.add([1], 0) = [1, 0]
subarray
截取数组
示例
int[] subarray(int[] array, int startIndexInclusiveint endIndexExclusive)
indexOf
查找某个元素的下标
isEquals
比较数组是否相等
toObject
基础类型数据数组转换为对应的Object数组
网友评论