黑马程序员---JAVA基础---IO(十三)

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ---------------------- 

 

四、File概述
1、创建File对象
例如: File    f1=new    File("a.txt");将a.txt封装成对象,可以将已有的和未出现的文件或者文件夹封装成对象。
2、File类常见方法
(1)创建。
boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false。
和输出流不一样,输出流对象一建立创建文件。而且文件已经存在,会覆盖。
boolean mkdir():创建文件夹。
boolean mkdirs():创建多级文件夹。
(2)删除。
boolean delete():删除失败返回false。如果文件正在被使用,则删除不了返回falsel。
void deleteOnExit();在程序退出时删除指定文件。
(3)判断。
boolean    canExecute(); //是否可执行
boolean exists() :文件是否存在.
isFile():    isDirectory();    isHidden();    isAbsolute();
《注意》:在判断该对象是否是文件或目录之前,必须要先判断文件对象封装的内容是否存在,通过exists判断。
isAbsolute(); //是否是绝对路径,即使文件不存在也判断
(4)获取信息。
getName():
getPath()://获取文件相对文件目录
getParent():该方法返回的是绝对路径中的父目录,如果获取的是相对路径返回null,如果相对目录中有上一层目录,则返回该目录。
getAbsolutePath() //获取文件绝对路径
long lastModified() //最后修改时间
long length()                                     boolean  renameTo();//重命名(类似剪切的功能)

3、列出目录下所有内容—递归
(1)递归:也就是函数自身调用自身。这种表现形式,或者编程手法,称为递归。
(2)列出指定目录下文件或者文件夹,包含子目录中的内容。
也就是列出指定目录下所有内容。因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可。
在列出过程中出现的还是目录的话,还可以再次调用本功能。
(3)递归需要注意:1.限定条件。 2.要注意递归的次数,避免内存溢出。

 

import java.io.*;
class FileDemo3 
{
 public static void main(String[] args) 
{
 File dir = new File("d:\\testdir");
 //showDir(dir,0);
  //toBin(6);
 //int n = getSum(8000);
 //System.out.println("n="+n);
  System.out.println(dir.delete());
 }
 public static String getLevel(int level)
 {
 StringBuilder sb = new StringBuilder();
 sb.append("|--");
for(int x=0; xpublic static int getSum(int n) { 
if(n==1) return 1; 
return n+getSum(n-1); 
} 
public static void toBin(int num) { 
if(num>0) {
 toBin(num/2); 
System.out.println(num%2); 
}
 } 
public static void method() {
 method(); 
} 
}


 

4、删除带内容的目录: 删除原理:
在window中,删除目录从里面往外删除的。既然是从里往外删除。就需要用到递归。

五、打印流
1、PrintWriter(字符流)
构造函数可以接收的参数类型:
(1)file对象。File;     (2)字符串路径。String;      (3)字节输出流。OutputStream;       (4)字符输出流,Writer;
2、printStream(字节流)
构造函数可以接收的参数类型:
(1)file对象。File;        (2)符串路径。String;        (3)节输出流。OutputStream
3、RandomAccessFile
(1)该类不是算是IO体系中子类。而是直接继承自Object。但是它是IO包中成员。因为它具备读和写功能。内部封装了一个数组,而且通过指针对数组的元素进行操作。
(2)可以通过getFilePointer获取指针位置,同时可以通过seek改变指针的位置。其实完成读写的原理就是内部封装了字节输入流和输出流。
(3)通过构造函数可以看出,该类只能操作文件。而且操作文件还有模式:只读r,,读写rw等。如果模式为只读 r,不会创建文件。会去读取一个已存在文件,如果该文件不存在,则会出现异常。如果模式rw,操作的文件不存在,会自动创建。如果存则不会覆盖。
4、DataInputStream和DataOutputStream(操作基本数据类型)
(1)可以用于操作基本数据类型的数据的流对象。
(2)用于操作字节数组的流对象。
ByteArrayInputStream:在构造的时候需要接受数据源,而且数据源是一个字节数组。
ByteArrayOutputStream:在构造的时候不用定义数据目的,因为该对象中已经封装了可变长度的字节数组,这就是数据目的地。因为这两个流对象操作的是数组,并没有使用系统资源,所以不需要close关闭。


---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值