• 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中

  • 相关阅读:
    Android上传文件到服务器(转)
    Android -- 利用Broadcast开启Service(转)
    【转】实践最有效的提高Android Studio运行、编译速度方案
    Android Studio3.x新的依赖方式(implementation、api、compileOnly)
    Drawable子类之——StateListDrawable (选择器)
    解决android studio引用远程仓库下载慢(JCenter下载慢)
    跳槽季,面试官:能接受加班吗?
    PHP 底层的运行机制与原理
    PHP程序员如何突破成长瓶颈
    VirtualBox启动虚拟机报错0x80004005
  • 原文地址:https://www.cnblogs.com/mauiie/p/Mauiie.html
Copyright © 2020-2023  润新知