一,认识IO
通过数据流、序列化和文件系统提供系统输入和输出。
流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。
二,Java流的分类
- 按流向分:
- 输入流: 程序可以从中读取数据的流。
- 输出流: 程序能向其中写入数据的流。
- 按数据传输单位分:
- 字节流: 以字节为单位传输数据的流
- 字符流: 以字符为单位传输数据的流
- 按功能分:
- 节点流: 用于直接操作目标设备的流
- 过滤流: 是对一个已存在的流的链接和封装,通过对数据进行处理为程序提供功能强大、灵活的读写功能。
三,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