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  阅读(121)  评论(0)    收藏  举报