Java-Stream File IO

Java流(Stream)、文件(File)和IO

  • Java.io包几乎包含了所有的操作输入、输出需要的类。所有这些流类代表了输入源和输出目标
  • 一个流可以理解为一个数据序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据

读取控制台输入

  • Java的控制台输入由System.in完成;为获得一个绑定到控制台的字符流,可以把System.in包装在一个BufferedReader对象中来创建一个字符流

      BufferedReader br = new BufferedReader(new 
                              InputStreamReader(System.in));
    
  • BufferedReader对象创建后,可以使用read()方法从控制台读取一个字符,或者用readLine()方法读取一个字符串

  • 从控制台读取多字符输入

      import java.io.*;
    
      public class BRRead {
        public static void main(String args[]) throws IOException
        {
          char c;
          // 使用System.in 创建 BufferedReader
          BufferedReader br = new BufferedReader(new 
          					InputStreamReader(System.in));
          System.out.println("输入字符,按下‘q’键退出。");
          // 读取字符
          do {
          	c = (char) br.read();
          	System.out.println(c);
          } while(c != 'q');
        }
      }
    
  • 从控制台读取字符串

      import java.io.*;
      public class BRReadLines {
        public static void main(String args[]) throws IOException
        {
        	// 使用 System.in 创建 BufferedReader
        	BufferedReader br = new BufferedReader(new
        						InputStreamReader(System.in));
        	String str;
        	System.out.println("Enter lines of text.");
        	System.out.println("Enter 'end' to quit.");
        	do {
        		str = br.readLine();
        		System.out.println(str);
        	} while(!str.equals("end"));
        }
      }
    

控制台输出

  • 控制台的输出由print()println()完成

      import java.io.*;
      // 演示 System.out.write()
      // write() 不常用
      public class WriteDemo {
      	public static void main(String args[]) {
      	  int b;
      	  b = "A";
      	  System.out.write(b);
      	  System.out.write('\n');
      	}
      }
    

读写文件

  • FlieInputStream用于读取文件

      // 使用字符串类型的文件名创建一个输入流对象读取文件
      InputStream f = new FileInputStream("C:/java/hello");
      // 使用文件对象创建输入流对象来读取文件
      File f = new File("C:/java/hello");
      InputStream out = new FileInputStream(f);
    
  • FileOutputStream用来创建一个文件并向文件中写数据
    如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建文件

      // 使用字符串类型的文件来创建一个输出流对象
      OutputStream f = new FileOutputStream("C:/java/hello")
      // 使用一个文件对象创建一个输出流来写文件
      File f = new File("C:/java/hello");
      OutputStream f = new FileOutputStream(f);
    
  • 实例

      import java.io.*;
    
      public class filrStreamTest{
        public static void main(String args[]) {
          try{
            byte bWrite [] = {12, 32, 3, 20};
            OutputStream os = new FileOutputStream("test.txt");
            for(int x = 0;x < bWrite.length;x++) {
              os.write(bWrite[x]);
            }
            os.close();
    
            InputStream is = new FileInputStream("test.txt");
            int size = is.available();
    
            for(int i = 0; i < size; i++) {
              System.out.print((char) is.read() + " ");
            }
              is.close();
          } catch(IOException e) {
            System.out.print("Exception");
          }
        }
      }
    

Java中的目录

  • 创建目录
  1. mkdir()方法创建一个文件夹,成功返回true,失败返回false

  2. mkdirs()方法创建一个文件夹和它的所有父文件夹

     import java.io.File;
    
     public class CreateDir {
       public static void main (String args[]) {
         String dirname = "/tmp/user/java/bin";
         File d = new File(dirname);
         //创建目录
         d.mkdirs();
       }
     }
    
  • 读取目录
  1. 如果创建一个file对象并且它是一个目录,调用isDirectory()方法会返回true

  2. 调用对象上的list()方法,提取包含的文件和文件列表

     import java.io.File;
    
     public class DirList {
       public static void main(String args[]) {
         String dirname = "/tmp";
         File f1 = new File(dirname);
         if (f1.isDirectory()) {
           System.out.println("目录" + dirname);
           String s[] = f1.list();
           for (int i = 0; i < s.length; i++) {
             File f = new File(dirname + "/" + s[i]);
             if (f.isDirectory()) {
               System.out.println(s[i] + "是一个目录");
             } else {
               System.out.println(s[i] + "是一个文件");
             }
           }
         } else {
           System.out.println(dirname + "不是一个目录");
         }
       }
     }
    
  • 删除目录或文件 可以调用java.io.File.delete()方法

      import java.io.File;
    
      public class DeleteFileDemo {
        public static void main(String args[]) {
          File folder = new File("/tmp/java/");
          deleteFolder(folder);
        }
        //删除文件及目录
        piblic static void deleteFolder(File folder) {
          File[] files = folder.listFiles();
          	if(files!=null) {
          	  for(File f: files) {
          	    if(f.isDirectory()) {
          	      deleteFolder(f);
          	    } else {
          	      f.delete();
          	    }
          	  }
          	}
          	folder.delete();
        }
      }
    
posted @ 2017-08-19 20:44  YFIFE  阅读(103)  评论(0编辑  收藏  举报