Java IO流关东煮

来源:互联网 发布:软件系统运维 编辑:程序博客网 时间:2024/04/28 15:16

咱们直接上例子:  //JavaIO.java


package javaio;   

//下面导入需要的工具包

import java.io.File;   //文件
import java.io.FileReader;  //读取
import java.io.FileWriter;    //写入
import java.io.IOException;    //io异常
import java.io.FileNotFoundException;    //文件找不到异常

import java.util.Calendar;       //日期


public class JavaIO {
    public static void main(String[] args) {

            //下面为一些文件基本操作。注意:这里不是创建新文件的操作,是对原有文件的操作

            (这些操作的前提是,在你的盘(G)内有Folder这个文件夹,并在文件夹内有个LOL.exe)

            File F1 = new File("G:\\Folder\\");               //指定一个文件夹(F1指代"G:\\Folder\\"
            System.out.println(F1.getAbsolutePath());  //输出此文件夹的绝对路径
            File EXE1 = new File(F1,"LOL.exe");          //在F1这个文件夹下的文件(EXE1指代"LOL.exe"

            System.out.println("判断是否存在:"+EXE1.exists());                 //判断LOL这个文件是否存在
            System.out.println("判断是否是文件夹:"+EXE1.isDirectory());  //判断它是不是文件夹
            System.out.println("判断是否是文件:"+EXE1.isFile());              //判断它是不是文件(非文件夹)
            System.out.println("获取文件的长度:"+EXE1.length());            //获取它的文件长度
            
            //文件最后修改时间(这里如果出现19xx年,可能是你的文件你真没去修改过,用记事本打开修改保存即可)
            Calendar cal = Calendar.getInstance();   
            long time = EXE1.lastModified();   //定义一个time获取修改时间
            cal.setTimeInMillis(time);               //把修改时间写到cal

            System.out.println("文件的最后修改时间: " + cal.getTime().toLocaleString()); //输出修改时间


              //文件重命名(这里可以把注释符去掉,可以看见原来的LOL改成了DOTA)
//            File EXE3 =new File("G:\\Folder\\DOTA.exe");  //定义另一个名字EXE3
//            EXE1.renameTo(EXE3);   //把原来的LOLrenameTo那个名字
//            System.out.println("把LOL.exe改名成了DOTA.exe");
        try
        {

            //下面为  读某个文件 和 写某个文件 。(聪明的人自然不用和在下一样去相对路径创建相同名字文件)

            (前提,在你的IDE相对路径下创建一个iotest文件夹,并在文件夹下创建两个.txt,在读取用的txt里写内容)

            FileReader FR = new FileReader("iotest\\legend.txt");             //读取器 读取文件legend.txt
            FileWriter Foutput = new FileWriter("iotest\\new-legend.txt");  //写入器创建新文件
            int i = 0;    //定义一个标志位
            while((i=FR.read())!=-1)  //判断是否读完全部内容,标志位=-1即读完
            {
            System.out.print((char)i);  //逐个输出字符
            Foutput.write(i);  //在新文件逐个写字符(实现了把这个文件的字符,复制到另一个文件)
            }
            FR.close();  //关闭读取器(用完要关闭资源)
            Foutput.append("\r\n0220 legend");//在复制好的新文件后面 追加内容(append)换行为\r\n
            Foutput.close();  //写入器关闭(同上)
        }
        catch (FileNotFoundException e)    //异常部分就不解释了(不懂可以点异常二字)
        {System.out.println("找不到此文件");}
        catch(IOException e)
        {System.out.println("有输入输出错误");}
    }

}


//下面为字节流部分(效率)

例子:从应用程序中处理文件,相当于将一缸水倒入到另一个缸中:
FileOutputStream--->write()       方法相当于一滴一滴地把水“转移”过去
DataOutputStream-->writeXxx() 方法会方便一些,相当于一瓢一瓢把水“转移”过去
BufferedOutputStream--->write  方法更方便,相当于一飘一瓢先放入桶中,再从桶中倒入到另一个缸中,性能提高了


0 0