一,初识文件流
看到标题就知道接下来的所有操作对象都是面对文件进行的。那么问题来了。在java中目录是不是也属于文件呢?答案是yes。既然目录也属于文件,那么对于目录跟文件的区分就显现出来了。在接下来的操作中也包含了这部分的内容。方便于我们更好的区分对于文件以及目录分别应该采取什么样的对应方法。
另外我今天也是第一次接触java中的文件流,我把我自己的上课笔记以及小案例传上来,希望大家一起来进行探讨。
二,通过File类创建一个文件
1. 创建CreatNewFiles方法
注释:
(1)通过File类中的方法来对文件进行增删改查的操作。先new File类这个实体。
(2).exists()是File类中的一个方法,来判断文件是否存在
(3).createNewFile()为File类中的一个方法。来创建新文件。
package Test;
import java.io.File;
import java.io.IOException;
/**
* 创建新文件
*
* @param string
* @throws IOException
*/
public class CreatNewFiles {
public static void creatNewFile(String string) throws IOException {
File file = new File(string);
if (file.exists()) // 判断文件是否存在
return;
if (file.createNewFile()) // 创建新文件
System.out.println("文件创建成功!");
else {
System.out.println("文件创建失败!");
}
}
}
2. 测试类
注释:
(1)实例化CreatNewFiles这个类
(2)直接调用.creatNewFile方法()中指定创建路径以及创建文件的文件名
(3)创建出来的文件为空文件
package Test;
import java.io.IOException;
public class FileTest {
public static void main(String[] args) throws IOException {
CreatNewFiles creat = new CreatNewFiles();
creat.creatNewFile("C:/Users/IBM_ADMIN/Desktop/test.txt");
}
}
结果:

三,通过File类删除一个文件
1. 创建deleteFile文件方法
注释:.delete()为删除一个文件
package Test;
import java.io.File;
public class DeleteFiles {
public static void deleteFile(String string) {
File file = new File(string);
if (file.delete()) {
System.out.println("文件已经被删除!");
} else {
System.out.println("文件无法被删除!");
}
}
}
2. 测试类
package Test;
import java.io.IOException;
public class FileTest {
public static void main(String[] args) throws IOException {
DeleteFiles del = new DeleteFiles();
del.deleteFile("C:/Users/IBM_ADMIN/Desktop/test.txt");
}
}
结果:
文件被删除!!

四,通过Properties类来对文件添加内容
对文件的编辑方法应该有很多,不过我目前只学了通过Properties类来对文件进行编写。因此这里只针对Properties类中的方法进行展开。
1. .setProperty为Properties类中的一个方法。Properties内部是一个HashMap,因此是以键值对的方式进行入力的。也就是说一般在使用Properties类来对文件进行编译的时候,通常是对于配置文件之类的文件进行编译时比较适用。注释:
(1)Properties prop = new Properties();为实例化Properties这个类
(2)prop.setProperty("UserName", "tony");通过键值对的方式进行文件内容的输入
(3)prop.store(new FileOutputStream("C:/Users/IBM_ADMIN/Desktop/test.txt"), "add key and value"); 通过.store方法以及new FileOutputStream方法连用来对文件进行导出。把入力的内容重写到output后的文件中。另外 Properties类中有很多方法,建议可以查看API,这里就不一一对其中的方法进行列举了。也可以对文件的属性进行查看输出等。
package Test;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
public class FileTest {
public static void main(String[] args) throws IOException {
/*
* CreatNewFiles creat = new CreatNewFiles();
* creat.creatNewFile("C:/Users/IBM_ADMIN/Desktop/test.txt");
*/
Properties prop = new Properties();
// .setProperty是通过HashMap键值对的方式进行入力.
prop.setProperty("UserName", "tony");
prop.setProperty("UserPassword", "tony@123");
prop.setProperty("UserGroup", "Administrators");
System.out.println(prop);// 这里只是打印入力后的内容.但是并没有把内容输入到test.txt文本中.
// 通过.store方法结合 new FileOutputStream来指定要输出的文件位置,后面为comments.可以理解为注释
prop.store(new FileOutputStream("C:/Users/IBM_ADMIN/Desktop/test.txt"),
"add key and value");
System.out.println(prop);
}
}
五,通过Properties类来删除内容
注释:
(1)实例化Properties这个类
(2)实例化File这个类,并指定导入文件的绝对路径
(3).load(new FileInputStream(变量)) 通过.load以及 FileInputStream方法来加载文件中的内容。
(4).remove(“ key”).remove括号中跟的是载入文件键值对中的key.通过删除key的方式一并删除对应的value。
(5).clear() 是指清空文件中的所有内容
package Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.Properties;
public class FileTest {
public static void main(String[] args) throws IOException {
Properties prop = new Properties();
File result = new File("C:/Users/IBM_ADMIN/Desktop/test.txt"); // 通过实例化File类已及通过properties类中的.load方法加载文件
prop.load(new FileInputStream(result)); // FileInputStream()为加载方法
System.out.println(prop);
prop.remove("UserPassword"); // .remove()指定要删除的key,删除该key以及对应的value内容
System.out.println(prop);
prop.clear(); // .clear()是清空文件所有内容
System.out.println(prop);
}
}
结果:
第一行:.load()过来的文件初始内容
第二行:.remove()删除指定key后的结果
第三行:.clear() 后的文件内容

六,通过Properties类来显示文件属性
注释:
(1)实例化Properties,File这2个类。指定文件路径
(2)通过if语句先判断是否指定的为文件. (通过.isFile()方法)
(3)自定义一个showFileInfo()方法方便调用
(4)showFileInfo中的语句都是直接调用FIle类中的方法。(每个方法的具体注释请参考代码段注释)
(5)showFileinfo(file)直接调用自定义好的showFileInfo
package Test;
import java.io.File;
import java.util.Date;
import java.util.Properties;
public class FileTest {
public static void main(String[] args) {
Properties prop = new Properties();
File file = new File("C:/Users/IBM_ADMIN/Desktop/test.txt");
// 判断指定内容是否为文件
if (file.isFile()) {
System.out.println(file + "是一个文件");
} else {
System.out.println("文件没有找到!");
}
System.out.println();
showFileInfo(file);
}
public static void showFileInfo(File file) {
System.out.println("文件名为:" + file.getName());
System.out.println("文件路经:" + file.getPath()); // 查找文件相对路经
// System.out.println(file.getAbsolutePath()); //查找文件绝对路经
System.out.println("文件所在目录为:" + file.getParent()); // 显示文件所属上级目录
System.out.println("文件最后修改时间:" + new Date(file.lastModified()));
System.out.println("文件大小:" + file.length());
System.out.println("是否可读:" + file.canRead());
System.out.println("是否可写:" + file.canWrite());
System.out.println("是否是隐藏文件:" + file.isHidden());
}
}

结果:
C:\Users\IBM_ADMIN\Desktop\test.txt是一个文件
文件名为:test.txt
文件路经:C:\Users\IBM_ADMIN\Desktop\test.txt
文件所在目录为:C:\Users\IBM_ADMIN\Desktop
文件最后修改时间:Tue Feb 14 09:20:18 CST 2017
文件大小:115
是否可读:true
是否可写:true
是否是隐藏文件:false
以上是Properties于File类中比较常用的几种方法。当然不止仅仅有这些方法,更多的用法请查看相关的API,可以更好更灵活的对文件进行简易操作。
另外说了文件自然就会有文件夹也就是目录相关的用法。会在下一篇中提到。
谢谢大家的阅览。请多提意见,也可以多关注一下。谢谢。


原文:http://www.cnblogs.com/liupengpengg/p/6387116.html