Java I/o复习与总结 Dome 一

  一、File类

  File类是File类是java.io包中唯一处理磁盘文件和目录的类。它提供的方法都是与平台无关的,
   通过使用File类提供各种方法能够创建、删除文件和目录,或者获取磁盘上指定的文件和目录的相关信息。

 1 package com.tai.io;
 2 
 3 import java.io.File;
 4 import java.io.FileFilter;
 5 import java.io.IOException;
 6 
 7 public class FileDemo
 8 {
 9     /**
10      * File类是java.io包中唯一处理磁盘文件和目录的类。它提供的方法都是与平台无关的,
11      * 通过使用File类提供各种方法能够创建、删除文件和目录,或者获取磁盘上指定的文件和目录的相关信息。
12      * @param args
13      * @throws IOException 
14      */
15     public static void main(String[] args) throws IOException
16     {
17         File file = new File("E:/文件夹");
18         if(file.mkdir())
19         {
20             System.out.println("文件夹已创建!");
21         }
22             
23         
24         File file2 = new File("E:/文件夹/文件.txt");
25         if(file2.createNewFile())
26         {
27             System.out.println("文件已经创建!");
28         }
29         
30         getInfor(file2);
31         
32         if(file2.delete())
33         {
34             System.out.println("文件已删除!");
35         }
36         
37         File Dir = new File("C:"+File.separator+"abc");//separator 文件分割符这样写便于代码跨平台,更加健壮!
38         fFilter(Dir);
39     }
40     
41     /*
42      *获取相关信息
43      */
44     private static void getInfor(File file)
45     {
46         System.out.println("文件名"+file.getName());
47         System.out.println("文件父路径"+file.getParent());
48         System.out.println("文件的绝对路径"+file.getAbsolutePath());
49         System.out.println("所在磁盘的大小"+file.getTotalSpace()/(1024*1024*1024)+"GB");
50         System.out.println("所在磁盘的可用空间"+file.getUsableSpace()/(1024*1024*1024)+"GB");
51         System.out.println("是否是文件"+file.isFile());
52         System.out.println("是否是文件夹"+file.isDirectory());
53         System.out.println("是否是隐藏文件"+file.isHidden());
54         System.out.println("是否可读"+file.canRead()+"  是否可写"+file.canWrite()+"  是否可执行"+file.canExecute());
55     }
56     
57     /*
58      * FilenameFilter 过滤接口 此处用内部类实现FileFilter的accept()方法
59      * FilenameFilter和FileFilter类似,也提供文件过滤功能
60      * 性能上FilennameFilter较FileFilter效率稍高
61      */
62     private static void fFilter(File file)
63     {
64         File[] files = file.listFiles(new FileFilter()
65         {
66             @Override
67             public boolean accept(File pathname)
68             {
69                 if(pathname.isFile()&&pathname.getName().endsWith(".txt"))
70                 {
71                     return true;
72                 }
73                 return false;
74             }
75         });
76         System.out.println("该目录下的所有文本文件");
77         for(File f:files)
78         {
79             System.out.println(f.getName());
80         }
81     }
82     
83 }

 

  运行结果:

文件夹已创建!
文件已经创建!
文件名文件.txt
文件父路径E:文件夹
文件的绝对路径E:文件夹文件.txt
所在磁盘的大小84GB
所在磁盘的可用空间31GB
是否是文件true
是否是文件夹false
是否是隐藏文件false
是否可读true  是否可写true  是否可执行true
文件已删除!
该目录下的所有文本文件
b.txt
新建文本文档 (2).txt
新建文本文档.txt

 二、字节流

  计算机中的数据都是以字节为单位进行处理的,这类的数据保存文件也成为“二进制文本”,在Java中对这些文本的操作就是要使用Java的字节流对象。

InputStream和OutputStream分别是输入与输出字节流,它们都是抽象类型的,都不能实例化,它们在I/O包中的顶层,作为了众多字节流的父类。

Java中的字节流有很多,这是我写的几个常用的字节流Demo.

FileInputStream/FileOutputStream

FileInputStream与FileOutputStream 被称为文件流,是最常见的字节流。用于对磁盘文件的读写操作。
 * File类不只能创建、删除、获取文剪信息,但是不能打开和读写文件。FileInputStream与FileOutoutStream就是用于读写文件的
 * FileInputStream 的构造方法
 *   FileInputStream fis = new FileInputStream("c:/abc");
  File file = new File("c:/abc");
  FileInputStream fis = new FileInputStream(file);
  为了简化常用:
  FileInputStream fis = new FileInputStream(new File("c:/abc"));

Demo:

 1 package com.tai.io;
 2 
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileNotFoundException;
 6 import java.io.IOException;
 7 
 8 public class FileInputStreamDemo
 9 {
10 /**
11  * FileInputStream与FileOutputStream 被称为文件流,是最常见的字节流。用于对磁盘文件的读写操作。
12  * File类不只能创建、删除、获取文剪信息,但是不能打开和读写文件。FileInputStream与FileOutoutStream就是用于读写文件的
13  * FileInputStream 的构造方法
14  *         FileInputStream fis = new FileInputStream("c:/abc");
15         File file = new File("c:/abc");
16         FileInputStream fis = new FileInputStream(file);
17         为了简化常用:
18         FileInputStream fis = new FileInputStream(new File("c:/abc"));
19  * @throws IOException 
20  */
21     public static void main(String[] args) throws IOException
22     {
23         FileInputStream fis = new FileInputStream(new File("C:/abc/Demo.txt"));
24         FileInputStream fis2 = new FileInputStream(new File("C:/abc/b.txt"));
25         int b=0,len=0;
26         System.out.println("使用read()方法,每次读一个字节:");
27         //使用循环,每次读入一个字节,直到文件结尾。
28         while((b=fis.read())!=-1)
29         {
30             System.out.print((char)b);
31         }
32         fis.close();
33         System.out.println("
使用read(byte[] b)的方法,读取文件存入字符数组中");
34         //读取文件,直到结尾,存入byte数组中,打印。
35         byte[] bt = new byte[516];
36         while(-1!=(len=fis2.read(bt,0,516)))
37         {
38             String str = new String(bt,0,len);////这里需要特别注意的是  从0到len  len是实际的长度可能不到516 、
39             System.out.print(str);
40         }
41         fis2.close();
42         
43     }
44     
45     
46     
47 }
FileInputStreamD

运行结果:

使用read()方法,每次读一个字节:
this is a FileInputDemo.
使用read(byte[] b)的方法,读取文件存入字符数组中
回家过年,这本是很简单的四个字,却是许许多多游子一年中的期盼,当然,这也包括那些在外求学的莘莘学子们。

在外瓢泼久了,多想回到家乡看看为我们牵挂的父母亲人。曾经多少个日日夜夜想及这些,我们可以做的只是一壶浊酒而后在心底默默的祝福与思念。

“举头望明月,低头思故乡”一年到头,隐藏在我们心底的除了深深的牵挂还剩下什么呢?一年到头,又有多少父母无时无刻不在思念着远方的儿女?

记得还小的时候我们是多么的喜欢过年,有新衣服穿、有压岁钱拿,好多好吃好玩的,还不用担心作业是否已经完成。而今我们盼望着过年,却只是那短暂的团聚,可以陪父母陪亲人说说心里的话。同时我们又多么地害怕,害怕父母那期望的眼神,尤其是害怕看见父母那满头乌发渐渐泛白,甚至脱落。虽然我知道,人没有不会老的,但看见父母脸上渐添的皱纹,和那渐渐泛白的乌发,心中总会有一种心酸的感觉。

FileOutputStream

     * FileOutputStream类是用于向磁盘文件写入字符数据的输出类
     * 当想磁盘某个文件写入时如果文件不存在它不会向FileInputStream那样抛异常,而是创建一个新的文件。
     * 构造方法与FileInputStream类似,但是有的会多个参数:
     * FileOutputStream fos = new FileOutputStream(File file,boolean append)
     * append  是否想文件尾部追加  true 在该文件的结尾追加内容,flase将清除原有的内容,添加新的内容。

 1 package com.tai.io;
 2 
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileNotFoundException;
 6 import java.io.FileOutputStream;
 7 import java.io.IOException;
 8 
 9 public class FileOutputStreamDemo
10 {
11     /**
12      * 本程序的功能是将一个文本中的内容复制到另一个文本中。
13      * @param args
14      * @throws IOException 
15      */
16     public static void main(String[] args) throws IOException
17     {
18         FileInputStream fis = new FileInputStream(new File("C:/abc/Demo.txt"));
19         FileOutputStream fos = new FileOutputStream(new File("C:/abc/Demo2.txt"),false);
20         int b= 0,len=0;
21         byte[] bt = new byte[512];
22         
23         while(-1!=(len=fis.read(bt,0,512) ) )
24         {
25             fos.write(bt,0,len);
26         }
27         System.out.println("已经吧Demo.txt中的内容复制到了Demo2.txt中!!");
28         fos.close();
29         fis.close();
30        
31         FileOutputStream fos2 = new FileOutputStream(new File("C:/abc/Demo3.txt"),false);
32         writein(fos2,"hello world!");
33         System.out.println("已经hello world写入到了文件C:/abc/Demo3.txt中");
34     }
35     
36     /*
37      * 简单的向文件写入字符串
38      */
39     private static void writein(FileOutputStream fos,String str)
40     {
41         byte[] b  = str.getBytes();
42         try
43         {
44             fos.write(b);
45             fos.close();
46         }
47         catch (IOException e)
48         {
49             // TODO Auto-generated catch block
50             e.printStackTrace();
51         }
52         
53     }
54 }
FileOutputStram

执行结果:

  已经吧Demo.txt中的内容复制到了Demo2.txt中!!
      已经hello world写入到了文件C:/abc/Demo3.txt中

原文地址:https://www.cnblogs.com/mauiie/p/Mauiie.html