您的位置:首页 > 职场人生

黑马程序员-基础知识梳理8

2013-08-06 14:06 267 查看
------- android培训java培训、期待与您交流!
----------
 /*

 * File常见方法

 * 1.创建

 * boolean  CreateNewFile();在指定位置创建文件,如果该文件已经存在,则不创建,返回false

 * 和输出流不一样,输出流对象一建立就创建文件。而且文件已经存在,会覆

 *

 * boolean mkdir();创建文件夹

 * boolean mkdirs();创建多级文件夹

 *

 * 2.删除

 * boolean delete();删除失败返回false,如果文件正在被使用,则删除不了,返回false

 * void deleteOnExit();在程序退出时删除指定文件

 *

 * 3.判断

 * boolean exists(): 文件是否存在

 * isFile();

 * isDirectory();

 * isHidden();

 * isAbsolutePath();

 * 4.获取信息

 * getName();

 * getPath();

 * getParent

 * getAbsolutePath()

 * long lastMeodified()

 * long lenth()

 */

  System.out.println("parent:"+f.getParent());//该方法返回的是绝对路径的父目录。如果获取的相对路径,返回null。

  //如果相对路径中有上一层目录,那么 该 目录就是返回结果

  File f = new File("file.txt");

  //记住,在判断文件是否是文件或者是目录时,必须要先判断该文件对象封装的内容是否存在,通过exists判断

'String[] names = f.list();//调用list方法的file对象必须是封  装了一个目录,该目录还必须存在 

 * 列出指定目录下文件或者文件夹,包含子目录的内容

 * 也就是列出指定目录下的内容

 *

 * 因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可

 * 在列出过程中出现的还是目录的话,还可以再次调用本功能

 * 也就是函数自身调用自身

 *

 * 这种表现形式,或者编程手法称为递归

 *

 * 递归要注意:

 * 1.限定条件

 *

 * 2.要注意递归的次数,尽量避免内存溢出

 */ 

/*

 * 删除一个带内容的目录

 * 删除原理:

 * 在windows中,删除目录从里面往外删除的

 *

 * 需要用到递归 

/*

 * 练习:将一个指定目录下的java文件的绝对路径,存储到一个文本文件中

 * 建立一个java文件列表文件

 *

 * 思路

 * 1,对指定目录进行递归

 * 2,获取递归过程所以的java文件的路径

 * 3,将这些路径存储到集合中

 * 4, 将集合中的数据写入到一个文件中

 */ 

/*

 * Properties 是hashtable的子类

 * 也就是说它具备map集合的特点,而且它里面存储的键值对都是字符串

 *

 * 是集合中和IO技术结合的集合容器

 *

 * 该对象的特点:可以用于键值对形式的配置文件

 *

 * 那么在加载数据时,需要数据有固定格式,键=值

 */

 * 用于记录应用程序运行次数

 * 如果使用次数已到,那么给出注册提示

 * 很容易想到的是:计数器

 * 可是该计数器定义在程序中,随着程序的运行而在内存中存在,并进行了自增

 * 可是随着该应用程序的退出,该计数器也在内存中消失了

 *

 * 下一次再启动该程序,又重新开始从0计数

 * 这样不是我们想要的。

 *

 * 程序即使结束,该计数器的值也 存在

 * 下一次程序启动会先加载该计数器的值,并+1后再重新存储起来

 *

 * 所以要建立一个配置文件,用于记录该软件的使用次数。

 * 该配置文件使用键值对的形式,这样便于阅读数据,并操作数据。

 *

 * 键值对数据是map集合

 * 数据是以文件形式存储,使用io技术,那么map+io---->properties

 *

 * 配置文件可以实现应用程序的共享

 *

 *

 */

public class RunCount {

 public static void main(String[] args)  throws IOException

 {

  Properties prop = new Properties();

  File file =new File("count.ini");

  if(!file.exists()){

   file.createNewFile();

  }

  FileInputStream fis = new FileInputStream(file);

  prop.load(fis);

  int count =0 ;

  String value = prop.getProperty("time");

  if(value!=null){

   count =  Integer.parseInt(value);

   if(count>=5)

   {

    System.out.println("您好,使用次数已到,给钱");

    return ;

   }

   }

  

   count++;

   System.out.println(count);

   prop.setProperty("time", count+"");

   FileOutputStream fos = new FileOutputStream(file);

   prop.store(fos,"");

   fos.close();

   fis.close();

   

  

 }

}

/*

 * 打印流:

 * 该流提供了打印方法,可以将各种数据类型的数据都原样打印

 *

 * 字节打印流:

 * PrintStream

 * 构造函数可以接受的参数类型:

 * 1。file对象,file

 * 2.字符串路径  String

 * 3.字节输出流。OutputStream

 *

 * 字符打印流

 * PrintWriter

 * 构造函数可以接受的参数类型:

 * 1.file对象,file

 * 2.字符串路径  String

 * 3.字节输出流。OutputStream

 * 4.字符数出流。Writer

 */

 public PrintWriter(Writer out, boolean autoFlush)
创建新 PrintWriter。

参数:
out
- 字符输出流
autoFlush
- boolean 变量;如果为 true,则 println、printf 或
format 方法将刷新输出缓冲区

SequenceInputStream 表示其他输入流的逻辑串联。它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。 

/*

 * RandomAccessFile

 * 该类不算是IO体系中的子类

 * 而是直接继承自Object

 * 但是它是IO包中的成员,因为他具备读写功能

 * 内部封装了一个数组,而通过指针对数组元素进行操作

 * 可以通过getFilePointer获取指针位置

 * 同时可以通过seek改变指针的位置

 *

 * 其实完成读写的原理就是内部封装了字节输入流和输出流

 *

 * 通过构造函数可以看出,该类只能操作文件。

 * 而且操作文件还有模式:只读r,读写rw等。

 * 如果模式为只读r,不会创建文件。会去读取一个已存在的文件,如果该文件不存在则会出现异常。

 * 如果模式为rw的话,那么要操作的文件不存在,会自动创建,如果存在不会覆盖

 */

 * 用于操作字节数组的流对象

 * ByteArrayInputStream :在构造的时候,需要接受数据源,而且数据源是一个字节数组

 *

 * ByteArrayOutputStream 在构造时,不用定义数据目的,因为该对象中已经内部封装了可变长度的字节数组

 * 这就是数据目的地

 *
4000
因为这两个流对象都操作的数组,并没有使用系统资源。

 * 所以,不用进行close关闭

 *

 * 在流操作规律讲解时:

 * 源设备:

 * 键盘system.in,硬盘FileStream,内存ArrayStream

 *

 * 目的设备

 * 控制台System.out ,硬盘FileStream,内存ArrayStream

 *

 * 用流的读写思想操作数组

 */ 

*

 * 编码:字符串变字节数组

 *

 * 解码:字节数组变成字符串

 * String -->byte[]; str.getBytes(charsetName);

 *

 * byte[] -->String: new String(byte[]);

 */

  byte[] b1 = s.getBytes("GBK");

String s1 = new String(b1,"utf-8"); 
------- android培训java培训、期待与您交流!
----------  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: