流相关File文件以及能够操作流的properties集合


抽象路径名中的第一个名称是目录名,对于 Microsoft Windows UNC 路径名则是主机名。

抽象路径名中第一个名称之后的每个名称表示一个目录;

最后一个名称既可以表示目录,也可以表示文件。空 抽象路径名没有前缀和名称序列。

无论是抽象路径名还是路径名字符串,都可以是绝对 路径名或相对 路径名。

绝对路径名:完整的路径名,不需要任何其他信息就可以定位它所表示的文件。

相反,相对路径名必须使用取自其他路径名的信息进行解释。

默认情况下,java.io 包中的类总是根据当前用户目录来解析相对路径名。

此目录由系统属性 user.dir 指定,通常是 Java 虚拟机的调用目录。

路径:所在的目录加上本身 文件名或文件夹名

F:\java30\d20\fileDemo.java   在文件夹 d20下创建fileDemo.java

以绝对路径形式封装对象

File f = new File("F:\java30\d20\fileDemo.java");

File f = new File("F:\java30\d20","fileDemo.java");

以上两文件的绝对路径都为 F:\java30\d20\fileDemo.java

getParent()         –》 F:\java30\d20

getPath()           -》F:\java30\d20\fileDemo.java

getAbsolutePath()   -F:\java30\d20\fileDemo.java

以相对路径形似封装对象

File f = new File("fileDemo.java");

getParent()         –》 null

getPath()           -》fileDemo.java   封装什么返回什么

getAbsolutePath()   -F:\java30\d20\fileDemo.java

 

File 类的实例是不可变的;也就是说,一旦创建,File 对象表示的抽象路径名将永不改变。

注意:通过文件对象获取到的路径名能够直接用于创建文件或目录对象 但注意该对象已存在所以在创建对象前,需要修改下获取到的路径名否则创建文件失败

创建文件的路径分隔符是单反斜杠/或双斜杠\\但是getPath()得到-F:\java30\d20\fileDemo.java为什么可以创建文件对象,当然该对象已存在修改下路径即可

由于系统 所认识的分隔符是/或者\ 但是由于在字符串中 \具有转义功能 所以需要\\来表示\也就是说字符串中的\\系统接收到的是转义后的\   我原来认为 getPath()得到的路径系统输出为F:\java30\d20\fileDemo.java当把getpath作为路径创建对象的时候他表示的就是字符串”F:\java30\d20\fileDemo.java”因为这样的字符串是无法作为路径 创建文件对象的 但是事实上,系统输出的getpath就是系统所接受的字符串 我们创建路径用\\表示目录分割符就是要让系统接收的是单斜杠\,既然系统输出的getpath为F:\java30\d20\fileDemo.java那么将getpath作为路径(字符串)的时候其实可以认为他的内容就是F:\\java30\\d20\\fileDemo.java而系统所接收到 看见的就是他输出的getpath”F:\java30\d20\fileDemo.java”

 

类 File 文件和目录路径名的抽象表示形式。

    用来将文件或者目录封装成对象

    方便对文件与目录的属性信息进行操作。

    File对象可以作为参数传递给流的构造函数。

 

了解File类中的常用方法。  

       

构造方法    

创建File对象时并没有在指定处 创建文件或目录  硬盘指定处创建文件createNewFile()  创建目录mkdir()

File(File parent,String 文件名)   文件名可以是文件名也可以是文件夹名

        根据 parent 抽象路径名和 child 路径名字符串创建一个新(文件或文件夹) File 实例。

    File(String 创建的文件名路径)    只封装文件名 (相对路径下创建文件或文件夹)

        通过将给定路径名字符串转换为抽象路径名来创建一个新(文件或文件夹) File 实例

    File(String 必须存在的目录父目录, String 创建的文件名)     文件名可以是文件名也可以是目录名

        根据 parent 路径名字符串和 child 路径名字符串创建一个新(文件或目录) File 实例。

 

注意:创建的实物 是文件还是目录  是由mkdir()和createNewFile() 决定的 

  目录 也可以命名为 a.txt

 

File类的常见方法

    1,创建

        boolean createNewFile()  文件对象不存在的时候创建 文件存在则不创建返回false 文件不存在则返回false  当文件的路径(文件所在文件夹)不存在时抛异常    输出流对象创建文件,当文件存在的时候会覆盖          boolean mkdir() 创建此抽象路径名指定的目录(文件夹)。

只能够创建一级目录(一个文件夹) abd文件夹存在 最多能创建abd/1 文件夹1可创建

    booleanmkdirs() 创建多级目录。 abd文件夹存在 能创建abd/1/2/3/4 文件夹1,2,3,4可创建

    2,删除

        boolean delete() 删除此抽象路径名表示的 文件或空文件夹。 删除失败 返回false  

        public void deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。

    3,判断

        boolean exists() 测试此抽象路径名(File对象)表示的文件或目录是否存在。

        boolean isDirectory() 测试此抽象路径名(File对象)表示的文件是否是一个目录。

 需要先判断isexists() 

       boolean isFile()   测试此抽象路径名(File对象)表示的文件是否是一个标准文件。

   需要先判断isexists()

        booleanisHiden()  判断文件是否被隐藏

        booleanisAbsolute() 测试此抽象路径名是否为绝对路径名。 绝对路径名(D:/a.txt)相对路径名a.txt

        intcompareTo(File pathname) 按字母顺序比较两个抽象路径名。

        booleancanRead() 该文件对象(抽象路径名)能否被读取。

        boolean canWrite() 该文件对象能否被写入。

    4,获取信息

        String getName() 返回由此抽象路径名表示的文件或目录的名称

        String getParent() 获取父目录 文件对象所在的目录路径   返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录(相对路径下),则返回 null。

        (文件夹)F:\\0123/0000-->F:\0123         (文件)F:\\0123/0000.txt-->F:\0123

        String getPath()将此抽象路径名转换为一个路径名字符串。封装的是什么返回就什么

    (文件夹)F:\\0123/0000-->F:\0123\0000        (文件)F:\\0123/0000.txt-->F:\0123\0000.txt

(文件) 0000.txt--> 0000.txt 封装的是什么返回就什么

        StringgetAbsolutePath()    返回此抽象路径名的绝对路径名字符串。

        longlastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。

        long length()返回由此抽象路径名表示的文件的长度。如果是文件夹的话 一律为0

        staticFile[] listRoots() 列出可用的文件系统根。

        String[]list() 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。 文件和目录

            //调用list()方法的对象必须是目录 该目录还必须存在 所以需要先判断 isDirectory()

        File[] listFiles() 返回调用者对象(目录)下的所有文件和目录的File对象  文件的File对象和目录的File对象

File[] listFiles(FileFilterfilter)      返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。

接口 FileFilter   用于抽象路径名的过滤器。此接口的实例可传递给 File 类的 listFiles(FileFilter) 
  唯一方法boolean accept(File pathname)测试指定抽象路径名是否应该包含在某个路径名列表中pathname - 要测试的抽象路径名(调用者);仅当accept返回true时 该路径名才满足过滤器。

 

//不会自动创建文件创建文件需要mkdir()创建文件夹需要creatNewFile()

File uf = new File("F:/0123/MyServer",FileName);

//读取流关联了文件对象 当该文件不存在时会自动创建

FileOutputStream fos = new FileOutputStream(uf);

 

 

File方法熟悉

<span style="font-family: Arial, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);">import java.io.*;</span>
class fileDemo 
{
	public static void main(String[] args) throws IOException
	{
		//fileMethod();
		//fileMethod_1();
		//renameto();
		//listDemo();
		list2Demo();
	}
	//过滤 获取某类型某名称 文件 目录
	public static void list2Demo()
	{
		//创建指定目录的File对象  将指定目录封装成对象
		File dir = new File("F:/java30/d19");

		//获取 指定目录下的所有 文件 和 目录(文件夹)
		String[] sts = dir.list();

		//通过过滤 只获取 mp3文件		String[] list(FilenameFilte接口 dir ,String name)
		String[] sts = dir.list(new FilenameFilter()    //匿名内部类
		{
			public boolean accept(File dir,String name)
			{
				return name.endsWith(".mp3");
			}
		});
		for (String st:sts )
		{
			System.out.println(st);
		}
	}

	//获取指定 目录下 所有文件 目录
	public static void listDemo()
	{
		//获取盘符下的所有文件对象
		File[] fs = File.listRoots();
		for(File f:fs)
		{
			System.out.println(f);
			//获取各盘符下的所有 文件 目录
			String[] sts = f.list();
			for (String st:sts )
			{
				System.out.println(st);
			}
		}
		System.out.println("获取某指定目录H:\\下的所有文件和目录");
		//获取某指定目录下的所有文件和目录
		File fi = new File("H:\\");//创建抽象路径名
		//获取指定 目录下 所有文件 目录
		String[] sts = fi.list();//调用list()方法的对象必须是目录 该目录还必须存在
		for (String st:sts )
		{
			System.out.println(st);
		}
	}
	//renameTo 功能类似 移动 可换名
	public static void renameto() throws IOException
	{
		File f1 = new File("e:\\"+"00renameto.txt");
		//创建
		//f1.createNewFile();
		File f = new File("D:\\"+"00b.txt");
		sop("reNameTo:"+f.renameTo(f1));//被移动的文件必须要先存在
	}
	//判断 创建的File对象是 文件  还是 目录
	public static void fileMethod_1() throws IOException
	{
		//创建File对象
		File f = new File("h:\\"+"00b.txt");
		//创建实物 文件 或 目录
		sop("当文件对象实物不存在时创建:"+f.createNewFile());
		//判断 File对象所指的文件或目录 是否存在
		sop("是File对象是否创建实物吗:"+f.exists());
		//判断创建的File对象是文件呢还是目录
		sop("是文件吗:"+f.isFile());
		sop("是目录吗:"+f.isDirectory());
		sop("getName()"+f.getName());
		sop("getPath()"+f.getPath());
		sop("getParent()"+f.getParent());
		//如果获取的是相对路径则返回null  如果相对路径中有上一层目录 该目录就是返回结果
		sop("getAbsolutePath()"+f.getAbsolutePath());
		f.delete();
	
	}
	public static void fileMethod() throws IOException
	{
		//将文件00b.txt封装成fiel对象,可以将已有的和未有的文件或文件夹封装成对象
		File f2 = new File("h:\\00b.txt");//指定路径下创建文件
		//默认分隔符File.separator等价于\\ 等价于 /
		//File f1 = new File("h:"+File.separator+"00b.txt");
		//在指定路径下 将以有或未有的文件封装成文件对象  createNewFile()当指定路径不存在时 跑异常
		File f4 = new File("H:\\Download\\","001.txt");
		//在相对路径下创建文件对象
		File f1 = new File("00b.txt");
		
		//将指定路径下的文件夹封装成file对象
		//File d = new File("F:\\java30\\d20");
		File d = new File("F:"+File.separator+"java30"+File.separator+"d20");//默认分隔符的使用
		File f3 = new File(d,"00c.txt");
		//构造函数封装什么打印什么
		sop("f1:"+f1);
		sop("f2:"+f2);
		sop("f3:"+f3);
		sop("f4:"+f4);
// boolean canExecute()  测试应用程序是否可以执行此抽象路径名表示的文件。 文件对象能否至执行
		sop("文件对象能否能执行(文件创建前) "+f1.canExecute());
		sop("文件是否存在(文件创建前) "+f1.canExecute());

		//当文件对象不存在时 通过createNewFile()方法创建文件
		sop("当文件对象f1不存在时创建:"+f1.createNewFile());
		sop("当文件对象f2不存在时创建:"+f2.createNewFile());
		sop("当文件对象f3不存在时创建:"+f3.createNewFile());
		sop("当文件对象f4不存在时创建:"+f4.createNewFile());

		sop("文件对象能否能执行(文件创建后) "+f1.canExecute());
		sop("文件是否存在(文件创建后) "+f1.canExecute());
		//通过文件对象删除指定的文件
		sop("删除f1  "+f1.delete());
		sop("删除f2  "+f2.delete());
		sop("删除f3  "+f3.delete());
		//sop("删除f4  "+f4.delete());
		sop("文件对象能否至执行(文件删除后) "+f1.canExecute());
		//虚拟机推出的时候删除文件
		sop("程序退出时删除f4  ");
		f4.deleteOnExit();
		//当前路径下创建文件夹 mkdir() 相对路径下
		File dir = new File("abd/hhh");//只能够创建一级目录 abd/hhh 不能创建abd/hhh/jj
		sop("当前路径下创建文件夹dir:"+dir.mkdir());//目录已经存在返回false 不存在 返回true
		//创建指定目录下的文件夹
		//File dir2 = new File("h:/"+"abd");//当指定路径不存在时 dir2.mkdir()创建文件夹失败 不抛异常
		//sop("指定路径下创建文件夹dir2:"+dir2.mkdir());
		//sop("删除文件夹dir1  "+dir.delete());
		//sop("删除文件夹dir2  "+dir2.delete());
		
	}
	public static void sop(Object o)
	{
	System.out.println(o);
	}
}

相关练习:

文件夹的删除----->点击查看代码

文件夹的复制——>点击查看代码

列出文件目录——>点击查看代码


Properties一个可以将键值进行持久化存储的对象。Map--Hashtable的子类。

Map

       |--Hashtable

              |--Properties用于属性配置文件,键和值都是字符串类型。

特点:1:可以持久化存储数据。2:键值都是字符串。3:一般用于配置文件。

 需要注意一点 :将文件中的数据load(in)到properties集合中 文件中的中文 会变乱码 properties的键值都是字符串

|-- load()将流中的数据加载进集合。

原理:其实就是将读取流和指定文件相关联,并读取一行数据,因为数据是规则的key=value,所以获取一行后,通过 = 对该行数据进行切割,左边就是键,右边就是值,将键、值存储到properties集合中。

|-- store():写入各个项后,刷新输出流。

|-- list():将集合的键值数据列出到指定的目的地。


配置文件:小练习

用于记录应用程序运行的次数
如果次数已到,那么给出注册提示

配置文件可以实现应用程序数据的共享

点击打开链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值