IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]Java文件操作I

    lincyang发表于 2013-06-08 17:18:13
    love 0
    首先让我们来思考一下什么是文件。
    这里的文件专指计算机中的文件,如我们经常使用的txt文本文件、word文档、视频文件、音频文件、windows系统下的exe可执行文件、编写程序的源代码文件等等,我们平时上网冲浪浏览的网页,其实也是一种文件。它与我们的计算机生活形影不离,一句话,我们使用电脑,就是与文件打交道。
    概括的讲,计算机文件就是存储在某种存储设备上的数据流。
    为了有组织的管理这些存储在计算机中的文件,以人类办公中的文件夹为灵感,设计了计算机中的文件夹\目录概念。接着就引入了文件系统,这个专门负责管理文件和文件夹\目录的软件。如Windows下的NTFS、FAT32和Linux下的Ext4,请参考相关词条。

    下面进入正题,我们如何使用Java来操作这些文件。
    一、了解一下Java的IO包
    概述如下:通过数据流、序列化和文件系统来提供系统的输入和输出。
    此包有12个接口、51个类(1.6),其中最需要我们首先掌握的是:
    File类、Reader类、Writer类、InputStream类和OutputStream。
    1、先来看看File类
    我们这个话题的主角,此类提供了很多方法来操作文件,并且是与操作系统无关的,我们不用把精力投入在每个操作系统独特的路径写法,都交给这个类吧。对于文件操作,我们最常使用的几个是:
    创建文件夹-mkdir()
    创建文件-createNewFile()
    删除文件夹或文件-delete()
    查看文件的属性,如:
    文件大小:length()
    是否为隐藏文件:isHidden()
    是否可读写:canRead()、canWrite()
    最后修改时间:lastModified()

    例子:

    import java.io.*;
    
    public class TestFile
    {
            public static void main(String[] args)
            {
                    String folderPath = "./linc";
                    String filePath = "./linc/tmp.txt"; 
                    try
                    {
                    File folder = new File(folderPath);
                    File file = new File(filePath);
                    System.out.println("make dir is " + file.mkdir());
                    System.out.println("make file is " + file.createNewFile());
                    System.out.println("file size is " + file.length());
                    System.out.println("is hidden: " + file.isHidden());
                    System.out.println("can read: " + file.canRead());
                    System.out.println("is can write: " + file.canWrite());
                    System.out.println("last modified: " + new Date(file.lastModified()));
    
                    }
                    catch(IOException ex)
                    {
                            System.out.println("IOException: " + ex.getMessage());
                    }
            }
    }

    2、Reader和Writer类
    读写字符串流的高手,这是inputStream类和OutputStream最大的区别。当我们对文本文件进行输入输出操作时,多使用Reader和Writer,会带给我没很大的便利。
    先说写,然后咱们再读。需要注意的是,操作完毕后一定要调用close()方法。
    Writer:
        此类的继承体系如下:

            java.lang.Object
                |
                |____java.io.Writer
                        |
                        |____java.io.PipedWriter
                        |
                        |____java.io.PrintWriter
                        |
                        |____java.io.FilterWriter
                        |
                        |____java.io.StringWriter
                        |
                        |____java.io.BufferedWriter
                        |
                        |____java.io.CharArrayWriter
                        |
                        |____java.io.OutputStreamWriter
                                |
                                |____java.io.FileWriter
    顾名思义,最重要的方法是write,并重载了多次方便我们使用。

    Reader:
        此类的继承体系与Writer类似:
            java.lang.Object
                |
                |____java.io.Reader
                        |
                        |____java.io.PipedReader
                        |
                        |____java.io.StringReader
                        |
                        |____java.io.FilterReader
                        |        |
                        |        |__java.io.PushbackReader
                        |
                        |____java.io.BufferedReader
                        |        |
                        |        |__java.io.LineNumberReader
                        |
                        |____java.io.CharArrayReader
                        |
                        |____java.io.InputStreamReader
                                |
                                |____java.io.FileReader
    此类最重要的方法是read(),也是重载多次。



沪ICP备19023445号-2号
友情链接