黑马程序员《java基础总结(十二)》(IO流<File类、打印流>)
来源:互联网 发布:java session键值对 编辑:程序博客网 时间:2024/05/17 00:53
File类:将文件系统中的文件和文件夹封装成了对象。提供了更多的属性和行为可以对这些文件和文件夹进行操作。这些是流对象办不到的,因为流只操作数据。
File类常见方法:
1:创建。
booleancreateNewFile():在指定目录下创建文件,如果该文件已存在,则不创建。而对操作文件的输出流而言,输出流对象已建立,就会创建文件,如果文件已存在,会覆盖。除非续写。
booleanmkdir():创建此抽象路径名指定的目录。
booleanmkdirs():创建多级目录。
2:删除。
booleandelete():删除此抽象路径名表示的文件或目录。
voiddeleteOnExit():在虚拟机退出时删除。
注意:在删除文件夹时,必须保证这个文件夹中没有任何内容,才可以将该文件夹用delete删除。
window的删除动作,是从里往外删。注意:java删除文件不走回收站。要慎用。
3:获取.
longlength():获取文件大小。
StringgetName():返回由此抽象路径名表示的文件或目录的名称。
StringgetPath():将此抽象路径名转换为一个路径名字符串。
StringgetAbsolutePath():返回此抽象路径名的绝对路径名字符串。
StringgetParent():返回此抽象路径名父目录的抽象路径名,如果此路径名没有指定父目录,则返回null
。
longlastModified():返回此抽象路径名表示的文件最后一次被修改的时间。
File.pathSeparator:返回当前系统默认的路径分隔符,windows默认为“;”。
File.Separator:返回当前系统默认的目录分隔符,windows默认为“\”。
4:判断:
booleanexists():判断文件或者文件夹是否存在。
booleanisDirectory():测试此抽象路径名表示的文件是否是一个目录。
booleanisFile():测试此抽象路径名表示的文件是否是一个标准文件。
booleanisHidden():测试此抽象路径名指定的文件是否是一个隐藏文件。
booleanisAbsolute():测试此抽象路径名是否为绝对路径名。
5:重命名。
booleanrenameTo(Filedest):可以实现移动的效果。剪切+重命名。
String[] list():列出指定目录下的当前的文件和文件夹的名称。包含隐藏文件。
如果调用list方法的File对象中封装的是一个文件,那么list方法返回数组为null。如果封装的对象不存在也会返回null。只有封装的对象存在并且是文件夹时,这个方法才有效。
递归:就是函数自身调用自身。
什么时候用递归呢?
当一个功能被重复使用,而每一次使用该功能时的参数不确定,都由上次的功能元素结果来确定。
简单说:功能内部又用到该功能,但是传递的参数值不确定。(每次功能参与运算的未知内容不确定)。
递归的注意事项:
1:一定要定义递归的条件。
2:递归的次数不要过多。容易出现StackOverflowError栈内存溢出错误。
其实递归就是在栈内存中不断的加载同一个函数。
Java.util.Properties:一个可以将键值进行持久化存储的对象。Map--Hashtable的子类。
Map
|--Hashtable
|--Properties:用于属性配置文件,键和值都是字符串类型。
特点:1:可以持久化存储数据。2:键值都是字符串。3:一般用于配置文件。
|-- load():将流中的数据加载进集合。
原理:其实就是将读取流和指定文件相关联,并读取一行数据,因为数据是规则的key=value,所以获取一行后,通过 = 对该行数据进行切割,左边就是键,右边就是值,将键、值存储到properties集合中。
|-- store():写入各个项后,刷新输出流。
|-- list():将集合的键值数据列出到指定的目的地。
以下介绍IO包中扩展功能的流对象:基本都是装饰设计模式。
Java.io.outputstream.PrintStream:打印流
1:提供了更多的功能,比如打印方法。可以直接打印任意类型的数据。
2:它有一个自动刷新机制,创建该对象,指定参数,对于指定方法可以自动刷新。
3:它使用的本机默认的字符编码.
4:该流的print方法不抛出IOException。
该对象的构造函数。
PrintStream(File file) :创建具有指定文件且不带自动行刷新的新打印流。
PrintStream(File file, String csn):创建具有指定文件名称和字符集且不带自动行刷新的新打印流。
PrintStream(OutputStream out):创建新的打印流。
PrintStream(OutputStream out, boolean autoFlush):创建新的打印流。
PrintStream(OutputStream out, boolean autoFlush, Stringencoding):创建新的打印流。
PrintStream(String fileName):创建具有指定文件名称且不带自动行刷新的新打印流。
PrintStream(String fileName, String csn)
PrintStream可以操作目的:1:File对象。2:字符串路径。3:字节输出流。
前两个都JDK1.5版本才出现。而且在操作文本文件时,可指定字符编码了。
当目的是一个字节输出流时,如果使用的println方法,可以在printStream对象上加入一个true参数。这样对于println方法可以进行自动的刷新,而不是等待缓冲区满了再刷新。最终print方法都将具体的数据转成字符串,而且都对IO异常进行了内部处理。
既然操作的数据都转成了字符串,那么使用PrintWriter更好一些。因为PrintWrite是字符流的子类,可以直接操作字符数据,同时也可以指定具体的编码。
PrintWriter:具备了PrintStream的特点同时,还有自身特点:
该对象的目的地有四个:1:File对象。2:字符串路径。3:字节输出流。4:字符输出流。
开发时尽量使用PrintWriter。
方法中直接操作文件的第二参数是编码表。
直接操作输出流的,第二参数是自动刷新。
//读取键盘录入将数据转成大写显示在控制台.BufferedReader bufr = new BufferedReader(newInputStreamReader(System.in));//源:键盘输入//目的:把数据写到文件中,还想自动刷新。PrintWriter out = new PrintWriter(new FileWriter("out.txt"),true);//设置true后自动刷新String line = null;while((line=bufr.readLine())!=null){ if("over".equals(line)) break; out.println(line.toUpperCase());//转大写输出} //注意:System.in,System.out这两个标准的输入输出流,在jvm启动时已经存在了。随时可以使用。当jvm结束了,这两个流就结束了。但是,当使用了显示的close方法关闭时,这两个流在提前结束了。out.close();bufr.close();
- 黑马程序员《java基础总结(十二)》(IO流<File类、打印流>)
- 黑马程序员-----十二、java基础IO流技术总结二
- 黑马程序员 Java基础<十>---> IO流<2>(File类,Properties,打印流,合并流)
- Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流) (黑马程序员)
- 黑马程序员——Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)
- 黑马程序员——Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)
- 黑马程序员——Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)
- 黑马程序员——Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)
- 黑马程序员——Java基础---IO、File类、Properties类、打印流、序列流(合并流)
- 黑马程序员——Java基础----IO(File类、Properties类、打印流、序列流、合并流)(3)
- 黑马程序员——Java基础:IO(二):File类、Properties类、打印流、序列流......
- 黑马程序员---JAVA基础---IO(十二)
- 黑马程序员 java基础24天 IO流--File类
- 黑马程序员 Java基础IO流之File类
- 黑马程序员java基础之io流中的File类
- 黑马程序员--IO流File类总结--java
- 黑马程序员--Java基础学习之IO流之File类、Properties对象、打印流、序列流等
- 黑马程序员——Java基础---IO(二)--File类、Properties类、打印流、序列流、其他类
- 逃出你的肖申克(五):看不见的牢笼(上)
- GDB十分钟教程
- SecureCRT上传bash: rz: command not found
- 用二进制进行权限管理
- SQL语句操作全集
- 黑马程序员《java基础总结(十二)》(IO流<File类、打印流>)
- 详解---文件权限: 粘附位sticky bit/用户设置位/组设置位
- Linux下几种文件传输命令 sz rz sftp scp
- 《知乎周刊:读书这件小事》摘记及书评
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- UVa 10034 Freckles (MST & 稠密图的O(V^2)的Prim算法)
- 在IIS中设置Session”永不过期”的问题
- Spring Data的使用
- VisualNet图形化的机房综合布线管理系统