- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章使用apache 的FileUtils处理文件的复制等操作方式由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
平时对一些文件进行操作,比如说写文件,读文件,复制一个文件等,使用原生File操作需要读取源文件,生成流对象,再写入一个新的文件中一系列过程,使用apache commons-io帮我们封装了这些实现,有些操作可以很容易的使用它的api来实现.
这里使用2.6版本,javadoc参照commons-io-2.6 。
1
2
3
4
5
|
<
dependency
>
<
groupId
>commons-io</
groupId
>
<
artifactId
>commons-io</
artifactId
>
<
version
>2.6</
version
>
</
dependency
>
|
1
2
3
4
5
|
File fileA = FileUtils.getFile(testPath +
"a.txt"
);
// 最终路径为入参拼接起来即testPath + "a.txt"
File fileAA = FileUtils.getFile(testPath,
"a.txt"
);
// 获取某个目录下的文件,后面参数是拼接而成的
File fileAAA = FileUtils.getFile(
new
File(testPath),
"a.txt"
);
|
1
2
3
4
5
6
7
8
9
|
// 获取临时目录路径
// 每种操作系统有所不同,Windows一般是C:\DOCUME~1\用户~1\LOCALS~1\Temp,Solaris一般是:/var/tmp/,Linux和Mac OS X一般是:/tmp
// Windows的java.io.tmpdir属性值可以看环境变量->用户变量中的TMP。
File tempDirectory = FileUtils.getTempDirectory();
String tempDirectoryPath = FileUtils.getTempDirectoryPath();
File userDirectory = FileUtils.getUserDirectory();
String userDirectoryPath = FileUtils.getUserDirectoryPath();
System.out.println(tempDirectoryPath +
" - "
+ tempDirectory);
System.out.println(userDirectoryPath +
" - "
+ userDirectory.getName());
|
1
2
3
|
// 创建文件(实现与Unix上“ touch”实用程序相同的行为。它会创建一个大小为0的新文件,或者如果文件已经存在,则将其打开和关闭而不进行修改,而是更新文件的日期和时间。)
File fileD =
new
File(testPath +
"d.txt"
);
FileUtils.touch(fileD);
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
// 写文件
File fileB =
new
File(testPath +
"b.txt"
);
if
(!fileB.exists()) {
fileB.createNewFile();
}
// 通过字节写入文件
FileUtils.writeByteArrayToFile(fileB,
"Hello, smile"
.getBytes());
FileUtils.writeByteArrayToFile(fileB,
"Hello, sunshine"
.getBytes(),
true
);
// 通过行写入文件(覆盖)
FileUtils.writeLines(fileB, Lists.newArrayList(
"春夏秋冬, 三餐四季,只愿有你"
));
// 通过行写入文件(追加)
FileUtils.writeLines(fileB, Lists.newArrayList(
"春风很柔,夏风很烈,秋风清爽,东风凛冽,你就是春夏秋冬的风"
),
true
);
// 字符串写入,不换行追加
FileUtils.writeStringToFile(fileB,
"唯美有你"
,
"UTF-8"
,
true
);
FileUtils.writeStringToFile(fileB,
"哪里有你"
, Charset.defaultCharset(),
true
);
File fileC =
new
File(testPath +
"c.txt"
);
if
(!fileC.exists()) {
fileC.createNewFile();
}
// 流操作
fileInputStream = FileUtils.openInputStream(fileB);
// fileOutputStream = FileUtils.openOutputStream(fileC);
fileOutputStream = FileUtils.openOutputStream(fileC,
true
);
// 字节数组
byte
[] buffer =
new
byte
[
1024
];
// 将文件内容写到文件中
while
(fileInputStream.read(buffer) != -
1
) {
fileOutputStream.write(buffer);
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
// 按行读取文件内容
List list = FileUtils.readLines(fileAAA,
"UTF-8"
);
System.out.println(list.size() >
0
? list.get(
0
) :
""
+ list.size());
List<String> lines = FileUtils.readLines(fileB, Charset.defaultCharset());
System.out.println(lines.size() >
0
? lines.get(
0
) :
""
+ lines.size());
// 读取文件内容为字节
byte
[] bytes = FileUtils.readFileToByteArray(fileB);
System.out.println(
new
String(bytes));
// 读取文件为String
String fileToString = FileUtils.readFileToString(fileB,
"UTF-8"
);
System.out.println(fileToString);
String fileToString2 = FileUtils.readFileToString(fileB, Charset.defaultCharset());
System.out.println(fileToString2);
|
1
2
3
4
5
6
7
|
// recursive是否递归查询,这里查询.txt文件,也可以指定其他格式的,如果extensions为null则查询所有类型的文件
Collection<File> listFiles = FileUtils.listFiles(
new
File(testPath),
null
,
true
);
Collection<File> listFiles2 = FileUtils.listFiles(
new
File(testPath),
new
String[]{
"txt"
},
true
);
// 获取某个目录下的所有文件 TrueFileFilter.INSTANCE表示匹配所有的
Collection<File> files1 = FileUtils.listFiles(
new
File(testPath), TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);
// 获取某个目录下的所有文件和文件目录 TrueFileFilter.INSTANCE表示匹配所有的
Collection<File> files2 = FileUtils.listFilesAndDirs(
new
File(testPath), TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);
|
1
2
3
|
// 文件内容比较
boolean
aa = FileUtils.contentEquals(fileA, fileAA);
boolean
ab = FileUtils.contentEquals(fileA, fileB);
|
1
2
3
4
5
6
7
8
9
10
|
// 文件复制,将文件A的内容复制给文件D
FileUtils.copyFile(fileA, fileD);
// 把文件复制到某个目录下
FileUtils.copyFileToDirectory(fileD,
new
File(testPath +
"inner"
));
// 把某个目录拷贝到另外一个目录
FileUtils.copyDirectoryToDirectory(
new
File(testPath +
"inner"
),
new
File(testPath +
"other"
));
// 把文件或目录拷贝到指定目录
FileUtils.copyToDirectory(fileB,
new
File(testPath +
"inner"
));
// 文件目录复制
FileUtils.copyDirectory(
new
File(testPath +
"inner"
),
new
File(testPath +
"first"
));
|
1
2
3
4
5
|
// 删除目录
FileUtils.deleteDirectory(
new
File(testPath +
"first"
));
// 删除文件或目录
FileUtils.deleteQuietly(fileD);
FileUtils.deleteQuietly(
new
File(testPath +
"first"
));
|
这就是FileUtils工具类的一些常用操作API使用.
Github源码参照 。
一般的方法,我们要复制一个文件,可能需要读取源文件,生成流对象,再写入一个新的文件中,使用apache commons-io很容就可以处理文件的复制.
下面的例子演示我们怎样使用FileUtils.copyFile方法在同一个文件夹复制文件和使用FileUtils.copyFileToDirectory方法复制到指定的文件夹中。其中System.getProperty("java.io.tmpdir")为通过JVM读取java.io.tmpdir属性取得临时文件夹,每种操作系统有所不同,Windows一般是C:\DOCUME~1\用户~1\LOCALS~1\Temp,Solaris一般是:/var/tmp/,Linux和Mac OS X一般是:/tmp,Windows的java.io.tmpdir属性值可以看环境变量->用户变量中的TMP.
当然我们一般使用的是绝对或相对路径,如要复制到F:\ajava目录中,我们只需将targetDir改成File targetDir = new File("F:\\ajava");运行后就可以看到结果.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
package
ajava.sample.apache;
import
java.io.File;
import
java.io.IOException;
import
org.apache.commons.io.FileUtils;
public
class
AjavaFileCopyExample {
public
static
void
main(String[] args)
{
// 源File对象
File source =
new
File(
"ajava.txt"
);
// 备份的File对象
File target =
new
File(
"ajava-backup.txt"
);
//通过JVM读取java.io.tmpdir属性取得临时文件夹
File targetDir =
new
File(System.getProperty(
"java.io.tmpdir"
));
try
{
//在同一个文件夹复制文件
System.out.println(
"复制 "
+ source +
" 文件到 "
+ target);
FileUtils.copyFile(source, target);
// 根据指定的文件夹复制
System.out.println(
"复制 "
+ source +
" 文件到"
+ targetDir +
"目录"
);
FileUtils.copyFileToDirectory(source, targetDir);
}
catch
(IOException e)
{
// Errors will be reported here if any error occures during copying
// the file
e.printStackTrace();
}
}
}
|
输出结果为:
复制 ajava.txt 文件到 ajava-backup.txt 。
复制 ajava.txt 文件到C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp目录 。
再查看对应的文件夹,就可以发现备份文件.
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我.
原文链接:https://www.cnblogs.com/kingsonfu/p/11799885.html 。
最后此篇关于使用apache 的FileUtils处理文件的复制等操作方式的文章就讲到这里了,如果你想了解更多关于使用apache 的FileUtils处理文件的复制等操作方式的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在编写一个应用程序,允许用户创建一个“问卷”,然后向其中添加问题。我正在使用核心数据来存储信息。我创建了一个问卷实体,并与问题实体建立了“一对多”关系。我的问题是,如果要允许用户复制(复制)整个调
有没有办法复制或复制 SharedPreference?或者我需要从一个变量中获取每个变量,然后将它们放入另一个变量中吗? 最佳答案 尝试这样的事情: //sp1 is the shared pref
下面的(A)和(B)有区别吗? (假设 NON ARC,如果重要的话) // --- (A) --- @interface Zoo : NSObject{} @property (copy) Dog
我正在尝试将 mysql SELECT 查询保存到文件中,如下所示: $result = mysqli_query($db,$sql); $out = fopen('tmp/csv.csv', 'w'
我需要创建一个 CVPixelBufferRef 的副本,以便能够使用副本中的值以按位方式操作原始像素缓冲区。我似乎无法使用 CVPixelBufferCreate 或 CVPixelBufferCr
我在 Source 文件夹中有一个 Active wave 录音 wave-file.wav。我需要使用新名称 wave-file-copy.wav 将此文件复制到 Destination 文件夹。
在使用 GNU Autotools 构建的项目中,我有一个脚本需要通过 make 修改以包含安装路径。这是一个小例子: configure.ac: AC_INIT(foobar, 1.0) AC_PR
我想将 SQL 的行复制到同一个表中。但是在我的表中,我有一个“文本”列。 使用此 SQL: CREATE TEMPORARY TABLE produit2 ENGINE=MEMORY SELECT
谁能给我解释一下 df2 = df1 df2 = df1.copy() df3 = df1.copy(deep=False) 我已经尝试了所有选项并执行了以下操作: df1 = pd.DataFram
Hazelcast 是否具有类似于 Ehcache 的复制? http://www.ehcache.org/generated/2.9.0/pdf/Ehcache_Replication_Guide.
我有以下拓扑。一个 Ubuntu 16.04。运行我的全局 MySQL 服务器的 Amazon AWS 上的实例。我想将此服务器用作许多本地主服务器(Windows 机器 MySQL 服务器)的从服务
使用 SQLyog,我正在测试表中是否设置了正确的值。我尝试过 SELECT type_service FROM service WHERE email='test@gmail.com' 因此,只输出
有人可以提供一些关于如何配置 ElasticSearch 进行复制的说明。我在 Windows 中运行 ES,并且了解如果我在同一台服务器上多次运行 bat 文件,则会启动一个单独的 ES 实例,并且
一 点睛 ThreadGroup 复制线程的两个方法。 public int enumerate(Thread list[]) // 会将 ThreadGroup 中的 active 线程全部复制到
一 点睛 ThreadGroup 复制线程组的两个方法。 public int enumerate(ThreadGroup list[]) // 相对于 enumerate(list,true) pu
官方documentation Cassandra 说: Configure the keyspace and create the new datacenter: Use ALTER KEYSPAC
This question already has answers here: How to weight smoothing by arbitrary factor in ggplot2? (2个答
我们有一个表格来表明对各种俱乐部的兴趣。输出将数据记录在 Excel 电子表格中,其中列有他们的首选姓名、姓氏、电子邮件、代词,以及他们感兴趣的俱乐部的相应列中的“1”(下面的模型)。 我们希望为俱乐
This question already has answers here: Closed 8 years ago. Possible Duplicate: In vim, how do I get
如何复制形状及其所在的单元格?当我手动复制时,形状会跟随单元格,但是当我使用宏进行复制时,我会得到除形状之外的所有其他内容。 Cells(sourceRow, sourceColumn).Copy C
我是一名优秀的程序员,十分优秀!