(21) - 简要知识点(一) (File类,Properties类,基本数据类型的包装类)
2013-10-08 22:51
281 查看
----------------------
ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
在视频学习过程中,穿插了一些偏向应用的一些知识点,这里做简单的说明。
File类的一些特点:
(a)File类的对象可以作为参数传递给流对象,稍后有示例。
(b)File 类的实例是不可变的,也就是说,一旦创建,File 对象表示的抽象路径名将永不改变,即一个对象对应一条路径下的文件或文件夹。
(c)相比较下,IO流不能直接操作文件夹,不能操作文件的属性,流基本只能对文件的数据进行操作,而File能操作文件相关的。
File类主要要求会用,了解常用方法:
(1)创建:(一般的构造器创建,略)
(2)删除
(3)判断
(4)获取信息
常用方法的示例:
列出目录列表
一个文件夹可能包含子文件夹或者一些文件,若想列出所有文件名,需依次遍历目录,若有子文件,需进入子文件夹,如此我们可以考虑用循环遍历或者用递归列出。下面是一个利用递归方法列出目录列表。
代码示例:
目录的删除
删除某个目录,需先保证文件夹是空的,那么就得先遍历所在目录下的所有文件,依次将内部的文件删除,是目录成为一个空目录,最后再删除目录,对于子目录也是如此。删除目录与列出目录列表方法类似,这里也可采用循环或递归,代码与上述列出目录列表示例类似,只是不是个存储过程,无需ArrayList,将getFileList方法中else分支的list.add(file);语句改写成System.out.println("删除文件:"+f.delete());删除语句即可。
(1)Properties是HashTable的子类,也就是说它具备map集合的双列值特点,即存储内容为键值对。
(2)该类能通过load方法读取文件流,一般为字节流,那么在JDK1.6版本加入了字符流,通过store方法保存更改信息到文件流中。
(3)在加保存数据时需要有固定的格式即:键 = 值。
具体用法看示例:
基本数据类型对象包装类的最常见作用,就是用于基本数据类型和字符串类型之间做转换
基本数据类型转成字符串:
基本数据类型+“”
基本数据类型.toString(基本数据类型值);
如:Integer.toString(34);将34整数变成“34”。
字符串转成基本数据类型:
parseInt(str);
xxxa = Xxx.parseInt(String);
doubleb = Double.parseDouble(12.13);
boolanbl = Boolean.parseBoolean(“false”);
或利用Integer的构造函数+intValue(),十进制转成其他进制:
toBinaryString();
toHexString();
toOctalString();
其他进制转成十进制:
staticint parseInt(String, int radix);//重载函数
至于包装类涉及到的自动拆装箱特性,在JDK1.5新特性篇幅中有阐述,这里不赘述。
----------------------
ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
在视频学习过程中,穿插了一些偏向应用的一些知识点,这里做简单的说明。
1、 File类
File类算是一种IO操作,是文件盒目录路径名的抽象表现形式。用于将指定路径下的文件或文件夹封装成对象,方便对文件和文件夹的操作。File类的一些特点:
(a)File类的对象可以作为参数传递给流对象,稍后有示例。
(b)File 类的实例是不可变的,也就是说,一旦创建,File 对象表示的抽象路径名将永不改变,即一个对象对应一条路径下的文件或文件夹。
(c)相比较下,IO流不能直接操作文件夹,不能操作文件的属性,流基本只能对文件的数据进行操作,而File能操作文件相关的。
File类主要要求会用,了解常用方法:
(1)创建:(一般的构造器创建,略)
//在指定位置创建文件,如果文件存在,则不创建,返回false boolean createNewFile(); //创建文件夹,只能创建一级目录。 boolean mkdir(); //创建多级文件夹(目录) boolean mkdirs();
(2)删除
//删除文件,并返回判断值,以确认文件是否被删除 boolean delete() //在虚拟机退出时删除指定文件,文件未及时清理时可用,如临时文件 void deleteOnExit()
(3)判断
//文件是否存在 boolean exists() //是否是一个标准的文件,是为true,否为false boolean isFile() //是否是文件夹,在使用该方法前,先用exists判断路径下目标是否存在 boolean isDirectory() //是否为隐藏文件,一般不访问隐藏文件 boolean isHidden() //是否为绝对路径 boolean isAbsolute()
(4)获取信息
//获取文件或路径名 String getName() //前者获取相对路径,后者获取绝对路径 String getPath() 与 StringgetAbsolutePath() //返回的是绝对路径中父的目录,若是相对路径,未写上一级则返回null,若有则返回上一级目录 String getParent() //最后一次呗修改的时间 long lastModified() //文件长度 long lehgth()
常用方法的示例:
import java.io.*; class FileDemo { public static void main(String[] args) throws IOException { fileTest(); method(); method2(); } public static void fileTest() throws IOException { //创建文件夹copy File dir = new File("copy"); //创建文件夹,若存在则返回false,否则创建 //但是mkdir只能创建一级目录,用mkdirs可创建多级文件夹 sop("mkdir:"+dir.mkdir()); //为了跨平台用字段separator代替分隔,这里只替换了一个\\ File f1 = new File("copy"+File.separator+"a.txt"); //若该文件最终不想要(比如jvm退出时删除创建文件),就调用该方法 f1.deleteOnExit(); //创建文件 sop("create:"+f1.createNewFile()); //删除 //sop("delete:"+f1.delete()); //创建a.txt,但要注意,最后会被重命名为aa.txt File f2 = new File("copy\\a.txt"); //文件是否执行了 sop("execte:"+f2.canExecute()); //文件是否存在 File f3 = new File("copy\\a.txt"); sop( "exists:"+f3.exists()); //不存在的文件 File f4 = new File("copy\\b.txt"); //对于不存在的文件都返回false sop("isDir:"+f4.isDirectory()); sop("isFile:"+f4.isFile()); } //路径 public static void method() { File f = new File("cpoy\\a.txt"); //封装时是什么路径,输出就是什么 sop("path:"+f.getPath()); //返回只有绝对路径 sop("absPath:"+f.getAbsolutePath()); //返回的是绝对路径中父的目录,若是相对路径,未写上一级则返回null,若有则返回上一级目录 sop("parent:"+f.getParent()); } //重命名 public static void method2() { File f1 = new File("copy\\a.txt"); File f2 = new File("copy\\aa.txt"); sop("重命名:"+f1.renameTo(f2)); } publicstatic void sop(Object obj) { System.out.println(obj); } }
列出目录列表
一个文件夹可能包含子文件夹或者一些文件,若想列出所有文件名,需依次遍历目录,若有子文件,需进入子文件夹,如此我们可以考虑用循环遍历或者用递归列出。下面是一个利用递归方法列出目录列表。
代码示例:
import java.io.File; import java.util.ArrayList; public class FileTest { public static void main(String[] args) { //需遍历目录 File file = new File("I:\\临时文件"); //列表存储 ArrayList<File>lists = new ArrayList<File>(); //获取目录列表 getFileList(file,lists); outList(lists); } public static void getFileList(File dir, ArrayList<File> list){ //获取目录下的所有文件或文件夹 File[] dirs = dir.listFiles(); for(File file : dirs){ //是否为文件夹 if(file.isDirectory()){ //用递归进一层遍历 getFileList(file,list); } else { //是文件则存进列表集合中 list.add(file); } } } //输出 public static void outList(ArrayList<File> lists){ for(File file : lists){ System.out.println(file); } } }
目录的删除
删除某个目录,需先保证文件夹是空的,那么就得先遍历所在目录下的所有文件,依次将内部的文件删除,是目录成为一个空目录,最后再删除目录,对于子目录也是如此。删除目录与列出目录列表方法类似,这里也可采用循环或递归,代码与上述列出目录列表示例类似,只是不是个存储过程,无需ArrayList,将getFileList方法中else分支的list.add(file);语句改写成System.out.println("删除文件:"+f.delete());删除语句即可。
2、 Properties类
一般是用来操作配置文件的,该配置文件为键=值得格式按行存储的内容。(1)Properties是HashTable的子类,也就是说它具备map集合的双列值特点,即存储内容为键值对。
(2)该类能通过load方法读取文件流,一般为字节流,那么在JDK1.6版本加入了字符流,通过store方法保存更改信息到文件流中。
(3)在加保存数据时需要有固定的格式即:键 = 值。
具体用法看示例:
import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.Properties; import java.util.Set; public class PropertiesDemo { public static void main(String[] args) throwsException { //仅在内存中操作 setAndGet(); //属性写入文档 load(); } //属性将会写入文档,其实类似于字节流的操作 public static void load() throws Exception{ FileInputStream fis = new FileInputStream("C:\\Users\\zzb520\\Desktop\\a.info"); FileOutputStream fos = new FileOutputStream("C:\\Users\\zzb520\\Desktop\\a.info"); Properties prop = new Properties(); //用load加载字节流,内容读入Properties对象中 prop.load(fis); //更改某个键的值,但这一步内容只在内存中得保存进文件中 prop.setProperty("a","000"); //store为保存更改键值得方法,真正写入到文件中 prop.store(fos, "zhu shi"); //列表显示 prop.list(System.out); } public static void setAndGet(){ Properties prop = new Properties(); //设置Properties的对象中的内容 prop.setProperty("a","1111"); prop.setProperty("b","2222"); //获取某个键的值 String value =prop.getProperty("a"); System.out.println(value); //获取所有键 Set<String> keys =prop.stringPropertyNames(); //再输出所有键的值 for(String key : keys){ //输出键和值 System.out.println(key +" ="+prop.getProperty(key)); } } }
3、基本数据类型的对象包装类
对应表:基本数据类型 | 对应包装类 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
boolean | Boolean |
float | Float |
double | Double |
char | Character |
基本数据类型转成字符串:
基本数据类型+“”
基本数据类型.toString(基本数据类型值);
如:Integer.toString(34);将34整数变成“34”。
字符串转成基本数据类型:
parseInt(str);
xxxa = Xxx.parseInt(String);
doubleb = Double.parseDouble(12.13);
boolanbl = Boolean.parseBoolean(“false”);
或利用Integer的构造函数+intValue(),十进制转成其他进制:
toBinaryString();
toHexString();
toOctalString();
其他进制转成十进制:
staticint parseInt(String, int radix);//重载函数
至于包装类涉及到的自动拆装箱特性,在JDK1.5新特性篇幅中有阐述,这里不赘述。
----------------------
ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
相关文章推荐
- j2se学习中的一些零碎知识点5之StringBuffer类,八种基本数据类型对应的包装类型和自动装
- C语言数据类型(一)——基本知识点
- 8个基本数据类型的包装类
- 基本数据类型对象 及包装类学习
- 变量的作用域和基本数据类型的包装类
- python教程19--《python基本数据类型list、tuple、dict、linecache读取file内容大综合运用》
- 基本数据类型的包装类
- 程序员——C语言之数据类型、基本运算、流程控制 易错知识点
- Java 4类8种基本数据类型都有相应的包装类
- redis复习(一):基本知识点----安装、基本数据类型和相关操作
- Java基本数据类型的包装类
- 基本数据类型知识点整理
- Java中基本数据类型和包装数据类型在Hibernate中使用
- javascript类型系统之基本数据类型与包装类型
- Mohican_9/21 基本数据类型
- java 基本数据类型和包装类型
- 第一百零七节,JavaScript基本包装类型,数据类型的方法
- 牛客网刷题知识点总结(四)基本数据类型
- Java基础——对象序列化+管道流+RandomAccessFile+操作基本数据类型的DataStream等
- 黑马程序--JAVA字符串String、StringBuffer、StringBuilder、基本数据类型包装