File类
用来将文件和文件夹封装成对象,方便对文件或文件夹的属性信息进行操作,File对象可以作为参数传给流对象的构造函数。
创建File对象
1 File f1 = new File("a.txt"); 2 File f2 = new File("c:\\abc", "b.txt"); 3 File d = new File("c:\\abc"); File f3 = new File(d, "c.txt");
File类常见方法
1 创建
boolean createNewFile() 在指定位置创建文件,如果文件存在则不创建,返回false。
和输出流不一样,输出流对象建立就会创建文件,而且如果文件存在就会覆盖。
boolean mkdir() 创建文件夹
boolean mkdirs() 创建多级目录文件夹
2 删除
boolean delete() 删除失败返回false
void deleteOnExit() 在程序结束时删除指定文件。
3 判断
boolean exists() 判断文件是否存在
boolean isDirectory() 判断文件对象是否是文件目录
boolean isFile() 判断文件 对象是否是文件
boolean isHidden() 是否隐藏
boolean isAbsolute() 是否是绝对路径
要点:判断文件对象是文件或文件目录时,必须先判断文件对象封装的内容是否存在,通过exists()来判断
4 获取信息
getName() 获取文件名称
getPath() 获得相对路径
getParent() 返回绝对路径中的父目录,不是绝对路径返回null 相对路径上一层有目录,则返回这目录
getAbsolutePath() 获得绝对路径
lastModified() 文件最后一次被修改的时间
length() 文件的长度
renameTo(File f) 更改文件名及其路径
文件列表
。File[] files = File.listroots(); 数组元素是电脑盘符
。FIle f = new File("c:\\"); String[] names = f.list();//调用list的FIle对象必须是封装了一个目录,该目录必须存在,不能是一个文件
是获取c盘目录下的所有文件和文件夹名称,包含隐藏文件。
File[] listFiles() ; 返回File对象 , 比list() 更好
递归 就是函数自身调用自身的功能
递归要注意
1 限定条件
2要注意递归的次数,避免内存溢出。
例子 数的累加
public int getSum(int n)
{
if(n == 1)
return 1 ;
return n + getSum(n-1);
}
十进制转二进制
public static void toBin(int n)
{
if(n >0 )
{
sop(n%2);
toBin(n/2);
}
}
删除带内容的目录
删除原理:在window中,删除目录时候从里往外删除。
import java.io.* ;
class FileDemo3
{
public static void main(String[] args)
{
File f = new File("e:\\111\\");
removeFile(f);
}
public static void removeFile(File f)
{
File[] files = f.listFiles();
for (int x=0; x<files.length; x++)
{
if (!files[x].isHidden()&&files[x].isDirectory()) //是否隐藏 是否文件夹
{
removeFile(files[x]);
}
System.out.println(files[x].delete());
}
f.delete();
}
}
创建java文件列表
Properties
Properties是hashtable的子类,它具备Map集合的特点,而且里面存储的键值对都是字符串。
是集合和IO技术相结合的集合容器。
该对象特点:可以用于键值对的配置文件。
加载的数据要有固定的格式:键=值
Properties的存取
Properties pro = new Properties();
pro.setProperty("zhang san ", "24"); 设置元素
pro.getProperty("zhangdan"); 获取元素
存取 配置文件
void | load(InputStream inStream) 从输入流中读取属性列表(键和元素对)。 将文件中的数据读取到内存集合中 |
void | load(Reader reader) 按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。 |
void | store(OutputStream out, String comments) 以适合使用 load(InputStream)方法加载到 Properties表中的格式,将此 Properties表中的属性列表(键和元素对)写入输出流。内存中集合的内容写入文件中 |
void | store(Writer writer, String comments) 以适合使用 load(Reader)方法的格式,将此 Properties表中的属性列表(键和元素对)写入输出字符。 |
练习
打印流:
该流提供了打印方法,可以将各种数据类型的数据都原样打印。
字节打印流:
PrintStream
构造函数可以接收的参数类型:
1,file对象。File
2,字符串路径。String
3,字节输出流。OutputStream
字符打印流:
PrintWriter
构造函数可以接收的参数类型:
1,file对象。File
2,字符串路径。String
3,字节输出流。OutputStream
4,字符输出流,Writer。
import java.io.*;
class PrintStreamDemo
{
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw = new PrintWriter(System.out,true);//如果为 true,则 println、printf 或 format 方法将刷新输出缓冲区
String line = null ;
while((line=br.readLine())!= null)
{
pw.println(line.toUpperCase());//println为PrintWriter特有方法
//pw.flush();
}
br.close();
pw.close();
}
}
合并流