一、FileReader
用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。要自己指定这些值,可以先在 FileInputStream 上构造一个 InputStreamReader。
FileReader
用于读取字符流。要读取原始字节流,请考虑使用 FileInputStream
FileReader的构造方法
:
FileReader(File file)
在给定从中读取数据的 File 的情况下创建一个新 FileReader
FileReader
(
String
fileName)
在给定从中读取数据的文件名的情况下创建一个新 FileRead
er
FileReader
程序小例子:
public class FileReaderDemo {
public static void main(String[] args) throws IOException
{
try
{
//创建FileReader对象并关联源文件
FileReader fr = new FileReader("E:/mySQL/测试/test.txt");
//创建char数组
char[] ch = new char[4];
int m = 0;
//循环读入char数组,并输出
while((m=fr.read(ch))!=-1)
{
System.out.print(new String(ch,0,m));
}
fr.close();
}
catch(IOException e)
{
throw new RuntimeException("读文件失败!");
}
}
}
二、FileWriter
FileWriter类用来写入字符文件的便捷类。
此类的构造方法假定默认字符编码和默认字节缓冲区大小都是可接受的。
要自己指定这些值,可以先在 FileOutputStream 上构造一个 OutputStreamWriter。
文件是否可用或是否可以被创建取决于底层平台。特别是某些平台一次只允许一个 FileWriter(或其他文件写入对象)打开文件进行写入。
在这种情况下,如果所涉及的文件已经打开,则此类中的构造方法将失败。
FileWriter 用于写入字符流。要写入原始字节流,请考虑使用 FileOutputStream。
FileWriter.close()方法说明:关闭流资源,但是关闭之前会刷新一次内部缓冲的数据,将数据刷到目的地中
和flush()方法的区别:flush刷新后,流可以继续使用,close刷新后会将流关闭
下面是FileWriter 程序的小例子:
publicclass FileWriterDemo {
publicstaticvoid main(String[] args) throws IOException
{
//创建一个FileWriter对象,该对象已一初始化就必须要明确被操作的文件
//而且该文件会被创建到指定目录下,如果该目录下已有同名文件,将被覆盖
//其实该步骤就是在明确数据要存放的目的地
FileWriter fw = null;
try
{
fw = new FileWriter("C:\\hello1.txt");
fw.write("lskhaha"); //调用write方法,将字符串写到流中
fw.close(); //关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据
}
catch(IOException e)
{
System.out.println(e.toString());
}
}
}
三、File类
File类的主要作用是获得文件类型的对象。
通常用户界面和操作系统使用与系统相关的路径名字符串来命名文件和目录,File类就是根据这些文件的路径字符串获得对应文件对象。
File类的构造方法:
File
(
String
parent,
String
child)
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例
File
(
String
pathname)
通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例
File
(
File
parent,
String
child)
根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例
File类的几个常用方法:
boolean
isFile
()
测试此抽象路径名表示的文件是否是一个标准文件
boolean
isAbsolute
()
测试此抽象路径名是否为绝对路径名
boolean
isFile
()
测试此抽象路径名表示的文件是否是一个标准文件
String
getPath
()
将此抽象路径名转换为一个路径名字符串
File类使用的例子:
列出指定目录下文件或者文件夹,包含子目录中的内容
也就是列出指定目录下所有内容
因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可
在列出过程中出现的还是目录的话,还可以再次调用本功能
也就是函数自身调用自身
这种表现形式,或者编程方法叫做递归
递归要注意: 1、限定条件 2、注意递归次数,尽量避免内存溢出
publicclass FileDemo3
{
publicstaticvoid main(String[] args)
{
//指定一个目录
File dir = new File("G:\\JAVA test");
//展示这个指定目录下所有文件,包括子目录下的文件
showdir(dir);
}
publicstaticvoid showdir(File dir)
{
System.out.println(dir+"--");
//获取指定目录下的文件及文件夹
File[] files = dir.listFiles();
for(File f : files)
{
//如果f是文件,则输出文件名
if(f.isFile())
System.out.println(f.getName());
else
//如果f是文件夹,递归调用showdir
if(f.isDirectory())
{
showdir(f);
}
}
}
}
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------