一,认识IO

通过数据流、序列化和文件系统提供系统输入和输出。

流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。

二,Java流的分类

  1. 按流向分:
    • 输入流: 程序可以从中读取数据的流。
    • 输出流: 程序能向其中写入数据的流。
  2. 按数据传输单位分:
    • 字节流: 以字节为单位传输数据的流
    • 字符流: 以字符为单位传输数据的流
  3. 按功能分:
    • 节点流: 用于直接操作目标设备的流
    • 过滤流: 是对一个已存在的流的链接和封装,通过对数据进行处理为程序提供功能强大、灵活的读写功能。


三,File(转:http://blog.csdn.net/shichexixi/article/details/5563605)

 刚开始我们主要是和文件打交道,故先了解一下File吧:用java对文件的操作

File类并没有指明怎样从文件读取或向文件存储;它只是描述了文件本身的属性。File对象用来获取或处理与磁盘文件相关的信息,例如权限,时间,日期和目录路径。此外,File还浏览子目录层次结构。很多程序中文件是数据的根源和目标。尽管它们在小应用程序中因为安全原因而受到严格限制,文件仍是存储固定和共享信息的主要资源。Java中的目录当成File 对待,它具有附加的属性——一个可以被 list( )方法检测的文件名列表。

参照api文档File有4个构造函数中常用的3个:

 @Test
    public void test03() throws IOException {
        //File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。 
        File f=new File("D:\\a.txt");
//        f.createNewFile();//在指定路径下创建名为a.txt的txt文件
        f.mkdir();//在指定路径下创建名为a.txt文件夹
        File f2=new File("D:\\a\\b\\c");
        f2.mkdirs();//在指定路径下创建a文件夹,a中有b文件夹,b中又有c文件夹
    }
@Test
    public void test04() throws IOException {
        //File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。/
        File f=new File("D:\\a","a.txt");//指定的D:\\a下面创建a.txt文件,D:\\a必须存在
        f.createNewFile();
        
    }
@Test
    public void test05() throws IOException {
        //File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
        File f=new File("D:\\b");
        if(!f.exists()){
            f.mkdir();
        }
        File f2=new File(f,"a.txt");
//        f2.mkdir();//在b文件珓下创建a.txt的文件夹。这点File(String parent, String child)做实验好像没效果
        f2.createNewFile();//在b文件珓下创建a.txt的文件
    }

 

 注意:不同的系统中文件的路径分隔符是不一样的。在window中为“\”,在unix中为”/“,为了具有跨平台性可以File.separator:(不过在window中使用“/”也可以使用)

@Test
    public void test07 () throws IOException{
        File f=new File("D:"+File.separator+"a.txt");
        f.createNewFile();
    }

 

 

  再来看看File类中常见的方法:

 

import java.io.File;
class FileDemo {
   static void p(String s) {
        System.out.println(s);
   }
   public static void main(String args[]) {
        File f1 = new File("/java/COPYRIGHT");
        p("File Name: " + f1.getName());
        p("Path: " + f1.getPath());
        p("Abs Path: " + f1.getAbsolutePath());
        p("Parent: " + f1.getParent());
        p(f1.exists() ? "exists" : "does not exist");
        p(f1.canWrite() ? "is writeable" : "is not writeable");
        p(f1.canRead() ? "is readable" : "is not readable");
        p("is " + (f1.isDirectory() ? "" : "not" + " a directory"));
        p(f1.isFile() ? "is normal file" : "might be a named pipe");
        p(f1.isAbsolute() ? "is absolute" : "is not absolute");
        p("File last modified: " + f1.lastModified());
        p("File size: " + f1.length() + " Bytes");
   }
}
File Name: COPYRIGHT
Path: /java/COPYRIGHT
Abs Path: /java/COPYRIGHT
Parent: /java
exists
is writeable
is readable
is not a directory
is normal file
is absolute
File last modified: 812465204000
File size: 695 Bytes
View Code

相关文章: