IO流(2)

14 篇文章 0 订阅


一、File类
1、定义:来将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作,File对象可以作为参数传递给流的构造函数。
2、File类的常见方法:
(1)、创建
boolean creatNewFile();在指定位置创建文件,如果该文件已经存在,则不创建,返回false。
static File createTempFile(String prefix,String suffix)在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。
static File createTempFile(String prefix,String suffix,File directory)在指定文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。和输出流不一样,输出流对象一建立创建文件,而且文件已经存在,会覆盖
boolean mkdir();创建文件夹
boolean mkdirs();创建多级文件夹
(2)、删除
boolean delete():删除失败返回false
void deleteOnExit();在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。在程序退出时删除指定文件
(3)、判断
boolean compareTo(File pathname)按字母顺序比较两个抽象路径名。
boolean exists():文件是否存在
isfile();测试此抽象路径名表示的文件是否是一个标准文件。
isDirectory();测试此抽象路径名表示的文件是否是一个目录
isHidden();/测试此文件是否是一个隐藏文件。
isAbsolute();测试此抽象路径名是否为绝对路径名。
(4)、获取信息
getName();获取名称
getPath()将此抽象路径名转换为一个路径名字符串。
getParent();返回此抽象路径名父目录的路径名字符串,如果此路径名没有指定父目录,则返回null.
getParentFile()返回此抽象路径名父目录的抽象路径名,如果此路径名没有指定父目录,则返回null.
getAbsolutePath();返回的是绝对路径名字符串
getAbsoluteFile();返回绝对路径名形式
long length()返回由此抽象路径名表示的文件的长度。
long lastModified() 返回最后一次被修改的时间。
代码演示:
import java.io.*;  
public class FileDemo {  
    public static void main(String[] args) throws IOException  
    {   method_2();  
        method_1();  
        consMethod();  
    }  
    public static void method_5()throws IOException  
    {  
        File f=new File("c:\\text.java");  
        File f1=new File("d:\\haha.java");  
        System.out.println("rename:"+f.renameTo(f1));//将f的名称换成f1的。  
    }  
    public static void method_4()throws IOException  
    {  
        File f=new File("d:\\abc\\file1.txt");  
            System.out.println("path:"+f.getPath());//封装什么就是什么  
             System.out.println("abspath"+f.getAbsolutePath());//不论是什么都是绝对的。  
             System.out.println("parent"+f.getParent());//该方法返回的是绝对路径中的父目录,如果获取的是相当路径,返回的是null  
         //如果相对路径中有上一层目录,那么该目录返回结果。  
    }  
      
    public static void method_3() throws IOException  
    {  
        File f=new File("file.txt");  
                //f.createNewFile();结果是文件是真,目录是假  
        f.mkdir();//结果是目录是真,文件是假。  
        //记住在判断文件对象是否是文件或者目的时,必须要先判断该文件对象封装的内容是否存在  
        //通过exists判断  
        System.out.println("dir:"+f.isDirectory());  
        System.out.println("file:"+f.isFile());  
        System.out.println(f.isAbsolute());//绝对路径的判断  
    }  
    public static void method_2()  
    {     
        File f=new File("file.txt");  
                //System.out.println("exists:"+f.exists());  
        //创建文件夹  
        File dir=new File("abc\\kkk");  
        System.out.println("mkdir:"+dir.mkdir());  
                //System.out.println("execute"+f.canExecute());测试应用程序是否可以执行此抽象路径名表示的文件。  
    }  
    public static void method_1() throws IOException  
    {     
        File f=new File("file.txt");  
        f.deleteOnExit();  
                //code();  
        System.out.println("creat:"+f.createNewFile());  
        System.out.println("delete:"+f.delete());  
          
    }  
      
            //创建File对象  
    public static void consMethod()  
    {  
        //将a.txt封装File对象,可以将已有的和未出现的文件或者文件夹封装成对象  
        File f1=new File("a.txt");  
        //  
        File f2=new File("c:\\abc"/*指定的父目录*/,"b.txt");  
        File d=new File("c:\\abc");/*封装目录*/  
        File f3=new File(d,"c.txt");  
        System.out.println("f1:"+f1);  
        System.out.println("f2:"+f2);  
        System.out.println("f3:"+f3);  
        File f4=new File("c:"+File.separator/*\\目录分隔符*/+"abc\\zzz\\a.txt");  
    }  
}  
二、递归
1、定义:当函数内每一次循环还可以调用本功能来实现,也就是函数自身调用自身。这种表现形式,或者编程手法,称为递归。
2、递归注意事项
(1)、限定条件。是来结束循环调用,否则是死循环。
(2)、注意递归的次数,尽量避免内存溢出。因为每次调用自身的时候都会先执行下一次调用自己的方法,所以会不断在栈内存中开辟新空间,次数过多,会导致内存溢出。
3、案例:删除一个带内容的目录
import java.io.*;  
class RemoveDir   
{  
    public static void main(String[] args)   
    {  
        //指定目录  
        File dir=new File("e:\\1");  
        //删除目录  
        removeDir(dir);  
  
    }  
  
    //删除传入目录  
    public static void removeDir(File dir)  
    {  
        File[] files=dir.listFiles();//列出目录下的所以文件和文件夹  
        //遍历  
        for (File file : files )  
        {  
            //如果还是目录且非隐藏  
            if(!file.isHidden()&&file.isDirectory())  
                removeDir(file);//继续删除目录里的内容  
            else  
                System.out.println(file.toString()+":-file-:"+file.delete());//删除文件  
        }  
        System.out.println(dir+":::dir:::"+dir.delete());//删除目录  
    }  
}  
三、打印流
1、打印流包括:PrintStream和PrintWriter。该流提供了打印方法,可将各种类型的数据都原样打印。
2、字节打印流:PrintStream,其构造方法中可接收的参数类型:
(1)、File对象。File
(2)、字符串路径:String
(3)、字符输出流:OutputStream
3、字符串打印流:PrintWriter,其构造方法中可接受的参数类型:
(1)、File对象:File
(2)、字符串路径:String
(3)、字节输出流:OutputStream
(4)、字符输出流:Writer
4、案例:把键盘输入的数据保存到文件中
import java.io.*;

class  PrintStreamDemo
{
	public static void main(String[] args) throws IOException
	{
		//键盘录入
		BufferedReader bufr = 
			new BufferedReader(new InputStreamReader(System.in));

		//打印流关联文件,自动刷新
		PrintWriter out = new PrintWriter(new FileWriter("a.txt"),true);

		String line = null;

		while((line=bufr.readLine())!=null)
		{
			if("over".equals(line))//结束字符
				break;
			out.println(line.toUpperCase());
			//out.flush();
		}
		
		//关流
		out.close();
		bufr.close();

	}	
}
四、小结
对于我来说,IO流算是java中比较难的部分。所有的类大部分都是成对出现的,字符流能完成的功能字节流全部都能完成,基本的操作方法基本一致。File类对文件的操作不会创建文件,流对文件的操作都会创建文件。




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值