------- android培训、java培训、期待与您交流! ----------
IO流的操作规律:
在选择IO流对象的时候,“三个明确”,来判断使用什么流对象。
1.明确源和目的地:
*
源:输入流。 InputSteam Reader
目的地:输出流 OutputStream Writer
2.明确操作的数据是否是文本文件:
*
是:使用字符流
否:使用字节流
3.明确设备对象:
源设备:内存,硬盘,键盘
目的设备:内存,硬盘,控制台
明确以上操作对象之后,再考虑是否需要提高效率,如果需要,则使用对应的缓冲流技术即可。
扩展:按指定编码表读取/存储文本
为了实现此需求,需要使用IO转换流,转换流可以根据指定编码集转换字符。
InputStreamReader(InputStream in, String charsetName);
OutputStreamReader(OutputStream out, String charsetName);
理解:编码与解码
通俗地理解就是:
将能看懂的文字变成0101数据,就是编码;
将看不懂的0101数据,变成能看懂的文字,就是解码。
稍微确切地说:
将字符按照指定字符集进行数据存储、写入到文件里,就是编码;
将文件里的数据按照指定字符集进行读取、显示,就是解码。
PrintStream类
此类是字节输出流OutputStream和FileOutputStream的子类,既可以用于控制台打印,也可以向目的地输出字节数据。
但是在需要写入字符而不是字节的情况下,应该使用PrintWriter类。
以下两个方法用于改变标准的输入/输出流设备
System.setIn(InputStream in) 重新定义System类的标准输入流
System.setOut(PrintStream out) 重新定义System类的标准输出流
扩展:获取系统信息,并打印到文本文件
Properties props = System.getProperties();
//props.list(new PrintStream("D:\\sysInfo.txt"));
props.list(new PrintWriter(new FileOutputStream("D:\\sysInfo.txt"),true));
File类 *
此类位于java.io包下,用于封装指定路径或文件名的
文件或文件夹对象。
常用构造函数:
File(File parent, String child)
File(String filName/pathName)
File(String parent, String child)
常用字段:
static String separator 跨平的分隔符
常用方法分类:
----------------
创建:
构造函数 File(String filename)
boolean createNewFile()
----------------
删除:
boolean delete()
void deleteOnExit() 当程序退出时删除File,即使程序发生异常,也会执行此操作。
----------------
判断:
boolean exits() 文件是否存在
boolean mkdir() 创建目录/文件夹,只能创建一级目录
boolean mkdirs() 创建目录文件夹,能创建多级目录
判断文件对象是否是文件或目录时,必须先判断此文件是否存在。
boolean isDirectory() 是否是目录/文件夹
boolean isFile() 是否是文件
boolean isHidden() 是否为隐藏文件
boolean isAbsolute() 是否是绝对路径
boolean canRead() 是否可读
boolean canWrite() 是否可写
----------------
获取信息:
String getName() 获取文件名
String getPath() 获取相对路径
String getParent() 获取父目录
String getAbsolutePath() 获取绝对路径
long lastModified() 获取文件的最后修改时间
long length() 获取文件的长度
File[] listRoots() 获取系统所有根目录,即有效盘符
String[] list(); 获取指定路径或文件夹下的文件列表
调用list方法的File对象
必须保证封装了一个文件夹,而且此文件夹必须是存在的。
----------------
修改文件名:
boolean renameTo(File name);
----------------
文件过滤:
File[] listFiles(FilenameFilter filter, String name) 按指定文件过滤器,对文件进行过滤操作。
list(FilenameFilter filter, String name) 对指定目录下的文件进行
过滤。