黑马程序员_File对象和Properties双列集合

------- <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);
   
}

}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值