------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
1.字节流回顾
|-- FileOutputStream
|-- FileInputStream
|-- 这2个流,操作的都是字节数组
|-- JAVAEE中,用户文件操作,全部字节流
2. 转换流
|-- 字节转向字符的桥梁 InputStreamReader
|-- 字符转向字节的桥梁 OutputStreamWriter
|-- 都是字符流,使用转换流的目的,在于用字符流去操作字节流
实现读一行,写一行的方法
InputStreamReader 构造方法中,用的都是字节流
OutputStreamWriter构造方法中,用的都是字节流
使用字符流的缓冲区,缓冲这2个转换流
3. File对象,文件,路径,文件夹都是对象,描述的类就是File类
|-- 构造方法
|-- new File(String pathname)
|-- new File(String parent,String child)
|-- new File(File file,String child)
|-- 创建方法
|-- boolean createNewFile()创建File对象封装的路径中的文件
|-- boolean mkdir()单级目录创建 mkdirs()多级目录创建
|-- 删除方法
|-- boolean delete() 删除File对象中封装的路径,不走回收站
====================================================
4. File对象的判断方法
|-- boolean exists() 判断File对象中封装的路径是否存在,存在就返回真
|-- boolean isAbsolute() 测试此抽象路径名是否为绝对路径名。
|-- boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录。
|-- boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件。
|-- boolean isHidden() 测试此抽象路径名指定的文件是否是一个隐藏文件。
5. File对象的获取方法
|-- File getAbsoluteFile() 返回此抽象路径名的绝对路径名形式。
|-- String getAbsolutePath()返回此抽象路径名的绝对路径名形式。
|-- 一个返回的是File类型对象,可以使用File类中的功能
|-- 另一个返回的是String类型对象,可以是String类中的功能
|-- String getName() 获取File对象封装的路径名,或者是文件名
|-- String getParent()获取File对象封装的父路径 返回String对象
|-- File getParentFile() 获取File对象封装的父路径 返回File对象
|-- long lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。
|-- static listRoots() 返回系统根
|-- long length() 返回由此抽象路径名表示的文件的长度。
|-- String[] list() 获取File对象中封装的路径下的所有文件和文件夹
|-- File[] listFiles()获取File对象中封装的路径下的所有文件和文件及
|-- File[] listFiles(FileFilter filter)获取File对象封装的路径下的所有文件和文件夹
但是这个方法的参数,可以传递一个文件过滤器,过滤掉不想要的文件
6. 复制单级文件夹*****
* 实现单级文件夹的复制
* 步骤:
* 1. 获取源的文件夹名 getName()方法
* 2. 根据获取到文件夹的名字,在我们的目的磁盘创建出一个相同名称的文件夹
* exists()没有,新建一个文件夹 mkdir()
* 3. 获取源文件夹中的所有文件列表
* File files[] = 源. listFiles();
* 4. 遍历数组,获取到数组中存储的所有文件名
* 5. 获取源文件的文件名
* 6. 使用字节输入流FileInputStream 读取源中的文件
* 7. 将复制文件的目的d:\\demo和源文件名联合起来,组成新的复制目的地
* 8. 用字节输出流,绑定新的赋值目的地
*
*
*
*/
import java.io.*;
public class CopyDirDemo {
public static void main(String[] args) {
File source = new File("c:\\demo");
File target = new File("d:\\");
copyDir(source,target);
}
public static void copyDir(File source,File target){
String dirName = source.getName();//源文件夹名
File newTarget = new File(target,dirName);//d:\\demo
//判断newTarget对象中封装的目录有没有,有就不创建,没有就创建
if(!newTarget.exists())
newTarget.mkdir();
File[] files = source.listFiles();
for(File f : files){
//获取到源文件的文件名、
String fileName = f.getName();
//将源文件名和复制文件的目的文件夹联合起来,组成新的File对象
File targetFile = new File(newTarget,fileName);
//System.out.println(targetFile);
//字节输入流,读取源文件,输出流写入文件
copyFiles(f,targetFile);
}
}
private static void copyFiles(File source,File target){
//字节输入流
FileInputStream fis = null;
FileOutputStream fos = null;
try{
fis = new FileInputStream(source);
fos = new FileOutputStream(target);
//数组缓冲
byte[] buf = new byte[1024];
int len = 0 ;
while((len = fis.read(buf))!=-1){
fos.write(buf, 0, len);
}
}catch(IOException e){
e.printStackTrace();
throw new RuntimeException("复制失败");
}finally{
try{
if(fos!=null)
fos.close();
}catch(IOException e){}
try{
if(fis!=null)
fis.close();
}catch(IOException e){}
}
}
}
=============================================================================================================================================
7. Properties双列集合
|-- extends Hashtable implements Map
|-- setProperty(String key,String value)
|-- getProperty(String key)
|-- load(字符输入流)关联IO输入流,不需要做读取动作
|-- store(字符流,字符串类型参数),将集合中的数据,存回到配置文件
8. 程序次数控制*****
|-- 新程序,运行3次,尝试运行,超过3次的时候,不在运行,提示你给钱
|-- Properties数据存储到文件中,实现永久保存,文件记录运行次数,运行一次++
|-- IO字符流,File
public class PropertiesDemo {
public static void main(String[] args)throws IOException {
method_2();
}
//Properties关联IO流
public static void method_2()throws IOException{
FileReader fr = new FileReader("c:\\pro.txt");
Properties pro = new Properties();
pro.load(fr);
//System.out.println(pro);
String name = pro.getProperty("name");
//System.out.println(name);
//将年龄修改后,存回配置文件
FileWriter fw = new FileWriter("c:\\pro.txt");
pro.setProperty("age", "16");
pro.store(fw, "ss");
//System.out.println(pro);
}
//properties中的自己的方法
public static void method_1(){
Properties pro = new Properties();
pro.setProperty("a", "1");
System.out.println(pro);
String value = pro.getProperty("aa");
System.out.println(value);
}
//Map中的方法,操作Properties
public static void method(){
Properties pro = new Properties();
pro.put("a", "1");
pro.put("b", "2");
pro.put("c", "3");
//迭代器取出集合
System.out.println(pro);
Set set = pro.keySet();
Iterator it = set.iterator();
while(it.hasNext()){
Object key = it.next();
Object value = pro.get(key);
System.out.println(key+"..."+value);
}
//Map.Entry
Set<Map.Entry<Object, Object>> set2 = pro.entrySet();
Iterator<Map.Entry<Object, Object>> it2 = set2.iterator();
while(it2.hasNext()){
Map.Entry<Object, Object> me = it2.next();
Object key = me.getKey();
Object value = me.getValue();
System.out.println(key+"..."+value);
}
}
}
1.字节流回顾
|-- FileOutputStream
|-- FileInputStream
|-- 这2个流,操作的都是字节数组
|-- JAVAEE中,用户文件操作,全部字节流
2. 转换流
|-- 字节转向字符的桥梁 InputStreamReader
|-- 字符转向字节的桥梁 OutputStreamWriter
|-- 都是字符流,使用转换流的目的,在于用字符流去操作字节流
实现读一行,写一行的方法
InputStreamReader 构造方法中,用的都是字节流
OutputStreamWriter构造方法中,用的都是字节流
使用字符流的缓冲区,缓冲这2个转换流
3. File对象,文件,路径,文件夹都是对象,描述的类就是File类
|-- 构造方法
|-- new File(String pathname)
|-- new File(String parent,String child)
|-- new File(File file,String child)
|-- 创建方法
|-- boolean createNewFile()创建File对象封装的路径中的文件
|-- boolean mkdir()单级目录创建 mkdirs()多级目录创建
|-- 删除方法
|-- boolean delete() 删除File对象中封装的路径,不走回收站
====================================================
4. File对象的判断方法
|-- boolean exists() 判断File对象中封装的路径是否存在,存在就返回真
|-- boolean isAbsolute() 测试此抽象路径名是否为绝对路径名。
|-- boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录。
|-- boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件。
|-- boolean isHidden() 测试此抽象路径名指定的文件是否是一个隐藏文件。
5. File对象的获取方法
|-- File getAbsoluteFile() 返回此抽象路径名的绝对路径名形式。
|-- String getAbsolutePath()返回此抽象路径名的绝对路径名形式。
|-- 一个返回的是File类型对象,可以使用File类中的功能
|-- 另一个返回的是String类型对象,可以是String类中的功能
|-- String getName() 获取File对象封装的路径名,或者是文件名
|-- String getParent()获取File对象封装的父路径 返回String对象
|-- File getParentFile() 获取File对象封装的父路径 返回File对象
|-- long lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。
|-- static listRoots() 返回系统根
|-- long length() 返回由此抽象路径名表示的文件的长度。
|-- String[] list() 获取File对象中封装的路径下的所有文件和文件夹
|-- File[] listFiles()获取File对象中封装的路径下的所有文件和文件及
|-- File[] listFiles(FileFilter filter)获取File对象封装的路径下的所有文件和文件夹
但是这个方法的参数,可以传递一个文件过滤器,过滤掉不想要的文件
6. 复制单级文件夹*****
* 实现单级文件夹的复制
* 步骤:
* 1. 获取源的文件夹名 getName()方法
* 2. 根据获取到文件夹的名字,在我们的目的磁盘创建出一个相同名称的文件夹
* exists()没有,新建一个文件夹 mkdir()
* 3. 获取源文件夹中的所有文件列表
* File files[] = 源. listFiles();
* 4. 遍历数组,获取到数组中存储的所有文件名
* 5. 获取源文件的文件名
* 6. 使用字节输入流FileInputStream 读取源中的文件
* 7. 将复制文件的目的d:\\demo和源文件名联合起来,组成新的复制目的地
* 8. 用字节输出流,绑定新的赋值目的地
*
*
*
*/
import java.io.*;
public class CopyDirDemo {
public static void main(String[] args) {
File source = new File("c:\\demo");
File target = new File("d:\\");
copyDir(source,target);
}
public static void copyDir(File source,File target){
String dirName = source.getName();//源文件夹名
File newTarget = new File(target,dirName);//d:\\demo
//判断newTarget对象中封装的目录有没有,有就不创建,没有就创建
if(!newTarget.exists())
newTarget.mkdir();
File[] files = source.listFiles();
for(File f : files){
//获取到源文件的文件名、
String fileName = f.getName();
//将源文件名和复制文件的目的文件夹联合起来,组成新的File对象
File targetFile = new File(newTarget,fileName);
//System.out.println(targetFile);
//字节输入流,读取源文件,输出流写入文件
copyFiles(f,targetFile);
}
}
private static void copyFiles(File source,File target){
//字节输入流
FileInputStream fis = null;
FileOutputStream fos = null;
try{
fis = new FileInputStream(source);
fos = new FileOutputStream(target);
//数组缓冲
byte[] buf = new byte[1024];
int len = 0 ;
while((len = fis.read(buf))!=-1){
fos.write(buf, 0, len);
}
}catch(IOException e){
e.printStackTrace();
throw new RuntimeException("复制失败");
}finally{
try{
if(fos!=null)
fos.close();
}catch(IOException e){}
try{
if(fis!=null)
fis.close();
}catch(IOException e){}
}
}
}
=============================================================================================================================================
7. Properties双列集合
|-- extends Hashtable implements Map
|-- setProperty(String key,String value)
|-- getProperty(String key)
|-- load(字符输入流)关联IO输入流,不需要做读取动作
|-- store(字符流,字符串类型参数),将集合中的数据,存回到配置文件
8. 程序次数控制*****
|-- 新程序,运行3次,尝试运行,超过3次的时候,不在运行,提示你给钱
|-- Properties数据存储到文件中,实现永久保存,文件记录运行次数,运行一次++
|-- IO字符流,File
public class PropertiesDemo {
public static void main(String[] args)throws IOException {
method_2();
}
//Properties关联IO流
public static void method_2()throws IOException{
FileReader fr = new FileReader("c:\\pro.txt");
Properties pro = new Properties();
pro.load(fr);
//System.out.println(pro);
String name = pro.getProperty("name");
//System.out.println(name);
//将年龄修改后,存回配置文件
FileWriter fw = new FileWriter("c:\\pro.txt");
pro.setProperty("age", "16");
pro.store(fw, "ss");
//System.out.println(pro);
}
//properties中的自己的方法
public static void method_1(){
Properties pro = new Properties();
pro.setProperty("a", "1");
System.out.println(pro);
String value = pro.getProperty("aa");
System.out.println(value);
}
//Map中的方法,操作Properties
public static void method(){
Properties pro = new Properties();
pro.put("a", "1");
pro.put("b", "2");
pro.put("c", "3");
//迭代器取出集合
System.out.println(pro);
Set set = pro.keySet();
Iterator it = set.iterator();
while(it.hasNext()){
Object key = it.next();
Object value = pro.get(key);
System.out.println(key+"..."+value);
}
//Map.Entry
Set<Map.Entry<Object, Object>> set2 = pro.entrySet();
Iterator<Map.Entry<Object, Object>> it2 = set2.iterator();
while(it2.hasNext()){
Map.Entry<Object, Object> me = it2.next();
Object key = me.getKey();
Object value = me.getValue();
System.out.println(key+"..."+value);
}
}
}