(一) 在电脑D盘下创建一个文件为HelloWorld.txt文件,判断他是文件还是目录,在创建一个目录IOTest,之后将HelloWorld.txt移动到IOTest目录下去;之后遍历IOTest这个目录下的文件.
public class Ex1 {
public static void main(String[] args) {
File hw = new File("U:", "HelloWorld.txt");
//文件创建用createNewFile()方法, 成功返回true
try {
boolean success = hw.createNewFile();
if(success) {
System.out.println("文件创建成功");
} else {
System.out.println("文件创建失败");
}
} catch (IOException e) {
System.out.println("文件创建失败");
}
if(hw.isFile()) {
System.out.println("It's a File.");
}
if(hw.isDirectory()) {
System.out.println("It's a Directory.");
}
//创建目录mkdir
File dir = new File("U:/IOTest");
//如果路径中有其他目录不存在,则创建
dir.mkdirs();
//文件移动renameTo
if(hw.renameTo(new File(dir.getPath(), hw.getName()))) {
System.out.println("文件移动成功");
} else {
System.out.println("文件移动失败");
}
//遍历文件调用list
for(String c : dir.list()) {
System.out.println(c);
}
}
}
注意: new File()
并不会创建任何文件或目录,而只是创建一个抽象对象,真的在文件系统中创建文件或者目录需要调用相应的方法,createNewFile()
或者mkdir(), mkdirs()
。均返回boolean
,代表创建成功与否。
(二) 递归实现输入任意目录,列出文件以及文件夹
public class Ex2 {
private static void list(File file, String leadingSpaces) {
if(file.isFile()) {
System.out.println(leadingSpaces + file.getName());
return;
}
if(file.isDirectory()) {
System.out.println(leadingSpaces + file.getName());
for(File sf : file.listFiles()) {
list(sf, leadingSpaces + " ");
}
}
}
public static void main(String[] args) {
File file = new File("U:/KenView");
list(file, "");
}
}
注意:list() vs. listFiles()
list()
返回子文件和目录的名字数据
listFiles()
返回子文件数组
(三) 递归实现列出当前工程下所有.java文件
public class Ex3 {
public static void listJavaFiles(File file) {
if(file.exists()) {
if(file.isFile() && file.getName().toLowerCase().endsWith(".java")) {
System.out.println(file.getPath());
return;
}
if(file.isDirectory()) {
for(File f : file.listFiles()) {
listJavaFiles(f);
}
}
}
}
public static void main(String[] args) {
listJavaFiles(new File(".."));
}
}
注意:学会使用相对路径
//得到当前路径
listFiles(new File("."));
//得到上一级目录
listFiles(new File(".."));
(四)查看D盘中所有的文件和文件夹名称,并且使用名称升序降序,文件夹在前和文件夹在
后,文件大小排序等。
public class Ex4 {
private static List<File> list(File file) {
List<File> list = new ArrayList();
if(file.exists()) {
if(file.isFile()) {
list.add(file);
}
if(file.isDirectory()) {
for(File f : file.listFiles()) {
list.addAll(list(f));
}
}
}
return list;
}
public static void main(String[] args) {
List<File> list = list(new File("U:/KenView"));
//文件名称排序
list.sort((f1, f2) -> f1.getPath().compareTo(f2.getPath()));
list.stream().forEach(f -> System.out.println(f.getPath()));
//文件大小排序
list.sort((f1, f2) -> (int) (f1.length() - f2.length()));
list.stream().forEach(f -> {
System.out.printf("%5d %s", f.length(), f.getPath());
System.out.println();
});
}
}
注意:file.length()
得到文件大小
/**
* Returns the length of the file denoted by this abstract pathname.
* The return value is unspecified if this pathname denotes a directory.
**/
(五) 在程序中写一个"HelloJavaWorld你好世界"输出到操作系统文件Hello.txt文件中
private static void inOut(String s, File outFile) {
BufferedReader reader = null;
BufferedWriter writer = null;
try {
if(!outFile.exists()) {
outFile.createNewFile();
}
reader = new BufferedReader(new StringReader(s));
writer = new BufferedWriter(new FileWriter(outFile));
String line;
while((line = reader.readLine()) != null) {
writer.write(line);
writer.newLine();
}
writer.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (writer != null) {
writer.close();
}
} catch (IOException e) {
}
}
}
注意:write()
之后记得flush()
文件写完记得关闭
网友评论