黑马程序员__java基础__IO流(File流、其它流)
2015-06-16 10:18
633 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
File类
一.File类的概述
(1)文件和目录路径名的抽象表现形式。
(2)File类用来将文件或者文件夹封装成对象。
(3)方便对文件与文件夹的属性信息进行操作。
(4)File对象可以作为参数传递给流的构造函数。
(5)流只能操作数据,不能操作文件。
二.File类的对象创建方式
(1)将文件或者文件夹封装成对象。如:File
f=new File("d://test//a.txt");
(2)将文件所在目录路径和文件一起传入。如:File
f=new File("d://test","a.txt");
(3)将文件目录路径封装成对象,再创建文件对象。File
f=new File("d://test"); File f1=new File(f,"a.txt");
三.File对象的常用方法
(1)创建和删除:
boolean createNewFile();在指定位置创建文件,如果该文件已经存在,则不创建,返回false。
boolean mkdir();创建一级文件夹。
boolean mkdirs();创建多级文件夹。
boolean delete();删除文件或目录。文件存在,返回true;文件不存在或者正在被执行,返回false。
(2)获取信息:
String getName();获取文件名称。
String getPath();获取文件的相对路径(即创建的对象传入的参数是什么就获取到什么)。
String getParent();获取文件父目录。返回的是绝对路径中的父目录。
String getAbsolutePath();获取文件的绝对路径。
long lastModified();返回文件最后一次被修改的时间。
long length();返回文件长度。
(3)判断:
boolean canExecute();是否是可执行文件。
boolean exists();文件是否存在。
boolean isFile();是否是文件。
boolean isDirectory();是否是文件夹。
boolean isHidden();是否是隐藏文件。
boolean isAbsolute();文件是否是绝对路径。
boolean
renameTo();重命名。
(4)系统根目录和容量获取:
static File[] listRoots();列出可用的文件系统根目录
String[] list();列出当前目录下所有文件包括隐藏。调用list方法的file对象必须是封装了一个目录。该目录还必须存在。
String[] list(FilenameFilter filter);
返回一个字符串数组,获取目录中满足指定过滤器的文件或目录。
FilenameFilter:文件名过滤器,是一个接口
accept(Filedir,String name),返回的是boolean型,对不符合条件的文件过滤掉。
File[]
listFiles();返回一个抽象路径名数组,获取当前文件夹下的所有文件和文件夹
File[] ListFiles(FilenameFilter filter);返回抽象路径名数组,获取目录中满足指定过滤器的文件或目录。
需求:获取d盘abc目录下后缀名为txt的文件。
递归
一.递归的定义:
当函数内每一次循环还可以调用本功能来实现,也就是函数自身调用自身。这种表现形式,或者编程手法,称为递归。
二.递归的特点:
(1)限定条件来结束循环调用,否则是死循环。
(2)注意递归的次数,尽量避免内存溢出。
(3)递归的例子
Properties类
一.Properties类的概述
(1)Properties是Hashtable的子类,它具备Map集合的特点。
(2)而且它里面还有存储的键值对,都是字符串,无泛型定义。是集合中和IO技术想结合的集合容器。
(3)通常该类用于操作以键值对形式存在的配置文件。
二.方法
(1)设置
Object setProperty(String key,String value);设置键和值,调用Hashtable的方法put
(2)获取
String getProperty(String key);指定key搜索value
Set<String> stringPropertyName();返回属性列表的键集,存入Set集合
(3)加载流和存入流
void load(InputStream ism);从输入字节流中读取属性列表(键和元素对)。又称将流中的数据加载进集合。
void load(Readerreader);从输入字符流中读取属性列表(键和元素对)。又称将流中的数据加载进集合。
voidlist(PrintStream out);将属性列表输出到指定的输出流
void store(OutputStreamout,String comments);对应load(InputStream )将属性列表(键值对)写入输出流。
void store(Writerwriter, String comments);对应load(Reader)将属性列表(键值对)写入输出流。
三. 演示Properties集合和流对象相结合的功能
打印流
一.概述
(1)打印流包括:PrintWriter与PrintStream,可以直接操作输入流和文件。
(2)PrintStream字节打印流:提供了打印方法可以对多种数据类型值进行打印,并保持数据的表示形式,不抛IOException。
其 构造函数,接收三种类型的值:字符串路径;File对象;字节输出流。
(3)PrintWriter:字符打印流。
其构造函数参数:字符串路径; File对象; 字节输出流;字符输出流。
序列流
一.概述
(1)SequenceInputStream:对多个流进行合并。
(2)步骤:
1.创建集合,并将流对象添加进集合
2.创建Enumeration对象,将集合元素加入。
3.创建SequenceInputStream对象,合并流对象
4.创建写入流对象,FileOutputStream关联写入文件
5.利用SequenceInputStream对象和FileOutputStream对象读数据进行反复读写操作。
File类
一.File类的概述
(1)文件和目录路径名的抽象表现形式。
(2)File类用来将文件或者文件夹封装成对象。
(3)方便对文件与文件夹的属性信息进行操作。
(4)File对象可以作为参数传递给流的构造函数。
(5)流只能操作数据,不能操作文件。
二.File类的对象创建方式
(1)将文件或者文件夹封装成对象。如:File
f=new File("d://test//a.txt");
(2)将文件所在目录路径和文件一起传入。如:File
f=new File("d://test","a.txt");
(3)将文件目录路径封装成对象,再创建文件对象。File
f=new File("d://test"); File f1=new File(f,"a.txt");
三.File对象的常用方法
(1)创建和删除:
boolean createNewFile();在指定位置创建文件,如果该文件已经存在,则不创建,返回false。
boolean mkdir();创建一级文件夹。
boolean mkdirs();创建多级文件夹。
boolean delete();删除文件或目录。文件存在,返回true;文件不存在或者正在被执行,返回false。
(2)获取信息:
String getName();获取文件名称。
String getPath();获取文件的相对路径(即创建的对象传入的参数是什么就获取到什么)。
String getParent();获取文件父目录。返回的是绝对路径中的父目录。
String getAbsolutePath();获取文件的绝对路径。
long lastModified();返回文件最后一次被修改的时间。
long length();返回文件长度。
(3)判断:
boolean canExecute();是否是可执行文件。
boolean exists();文件是否存在。
boolean isFile();是否是文件。
boolean isDirectory();是否是文件夹。
boolean isHidden();是否是隐藏文件。
boolean isAbsolute();文件是否是绝对路径。
boolean
renameTo();重命名。
(4)系统根目录和容量获取:
static File[] listRoots();列出可用的文件系统根目录
String[] list();列出当前目录下所有文件包括隐藏。调用list方法的file对象必须是封装了一个目录。该目录还必须存在。
String[] list(FilenameFilter filter);
返回一个字符串数组,获取目录中满足指定过滤器的文件或目录。
FilenameFilter:文件名过滤器,是一个接口
accept(Filedir,String name),返回的是boolean型,对不符合条件的文件过滤掉。
File[]
listFiles();返回一个抽象路径名数组,获取当前文件夹下的所有文件和文件夹
File[] ListFiles(FilenameFilter filter);返回抽象路径名数组,获取目录中满足指定过滤器的文件或目录。
需求:获取d盘abc目录下后缀名为txt的文件。
import java.io.*; class getFilter implements FilenameFilter { private String Filter; public getFilter(String Filter) { this.Filter=Filter; } public boolean accept(File dir,String name) { return name.endsWith(Filter); } } public class FileTest { public static void main(String[] args) { File dir=new File("d:\\ab"); getFilter gf=new getFilter(".txt"); String[] name=dir.list(gf); for(String names:name) System.out.println(names); } }
递归
一.递归的定义:
当函数内每一次循环还可以调用本功能来实现,也就是函数自身调用自身。这种表现形式,或者编程手法,称为递归。
二.递归的特点:
(1)限定条件来结束循环调用,否则是死循环。
(2)注意递归的次数,尽量避免内存溢出。
(3)递归的例子
/** * 列出指定目录下文件或文件夹,包含子目录,即列出指定目录下所有内容(带层次的)。 */ import java.io.*; public class FileTest { public static void main(String[] args) { File dir=new File("d:\\abcd"); remove(dir); } public static void remove(File dir) { File[] f=dir.listFiles(); for(File name:f) { if(name.isDirectory()) remove(name);//如果是目录,递归直到不是目录,输出文件名 else System.out.println(name);//输出文件名 } } }
Properties类
一.Properties类的概述
(1)Properties是Hashtable的子类,它具备Map集合的特点。
(2)而且它里面还有存储的键值对,都是字符串,无泛型定义。是集合中和IO技术想结合的集合容器。
(3)通常该类用于操作以键值对形式存在的配置文件。
二.方法
(1)设置
Object setProperty(String key,String value);设置键和值,调用Hashtable的方法put
(2)获取
String getProperty(String key);指定key搜索value
Set<String> stringPropertyName();返回属性列表的键集,存入Set集合
(3)加载流和存入流
void load(InputStream ism);从输入字节流中读取属性列表(键和元素对)。又称将流中的数据加载进集合。
void load(Readerreader);从输入字符流中读取属性列表(键和元素对)。又称将流中的数据加载进集合。
voidlist(PrintStream out);将属性列表输出到指定的输出流
void store(OutputStreamout,String comments);对应load(InputStream )将属性列表(键值对)写入输出流。
void store(Writerwriter, String comments);对应load(Reader)将属性列表(键值对)写入输出流。
三. 演示Properties集合和流对象相结合的功能
/** * 将流中的数据存储到集合中,并修改集合中的信息 */ import java.io.*; import java.util.*; public class PropertyTest { public static void main(String[] args) throws IOException { load(); } public static void load() throws IOException { FileInputStream fs=new FileInputStream("d:\\demo1.txt");//建立输入字节流 Properties pot=new Properties(); pot.load(fs);//把相关信息加载到集合中 pot.setProperty("zhangsan", "18");//修改集合中的信息 FileOutputStream fo=new FileOutputStream("d:\\demo1.txt") ;//建立输出字节流 pot.store(fo, null);//在相关文件体现 } }
打印流
一.概述
(1)打印流包括:PrintWriter与PrintStream,可以直接操作输入流和文件。
(2)PrintStream字节打印流:提供了打印方法可以对多种数据类型值进行打印,并保持数据的表示形式,不抛IOException。
其 构造函数,接收三种类型的值:字符串路径;File对象;字节输出流。
(3)PrintWriter:字符打印流。
其构造函数参数:字符串路径; File对象; 字节输出流;字符输出流。
序列流
一.概述
(1)SequenceInputStream:对多个流进行合并。
(2)步骤:
1.创建集合,并将流对象添加进集合
2.创建Enumeration对象,将集合元素加入。
3.创建SequenceInputStream对象,合并流对象
4.创建写入流对象,FileOutputStream关联写入文件
5.利用SequenceInputStream对象和FileOutputStream对象读数据进行反复读写操作。
相关文章推荐
- 黑马程序员-------异常处理和常用类
- 一个程序员的日常
- 让程序员跳槽的非钱原因
- 黑马程序员----java基础之面向对象
- 怎么面试架构师【注重招式还是心法】
- 【剑指offer】面试题七:用两个栈实现队列
- 黑马程序员-----------面向对象
- 习理论与公务员面试-贺丽红-专题视频课程
- 职场中的80,90后到底看重什么
- 2014年最新前端开发面试题(题目列表+答案 完整版)
- 黑马程序员--Java基础Day10
- 专访谢宇:拒绝做程序员“砖工”
- 【好程序员笔记分享】—— 函数结合指针的妙用
- 黑马程序员————System类的讲解
- 中文分词算法-百度面试题
- 黑马程序员——Java基础---基础加强
- 黑马程序员————————IO流 FileWriter类 和 FileReader类的一些基本用法
- 【好程序员笔记分享】—— 通过指针遍历字符串中的所有字符
- 黑马程序员——Java基础---反射
- 黑马程序员——Java基础---正则表达式