Java语言学习(7)-Java中IO

Java中的IO

Java中的IO包含流(Stream)、文件(File)的IO,所有IO类都定义在java.io包中。

一、控制台IO

1、输入

  Java的控制台输入由System.in完成。为了获取控制台的输入,可以把System.in封装在一个BufferedReader对象进行操作。样例:

    BufferedReader bReader = new BufferedReader(new InputeStreamReader(System.in));

  然后对bReader对象进行操作。

  1)       bReader.read():

    从控制台读取一个字符并按照int返回。流读取结束时时候返回-1,并抛出一个IOException。read()函数定义如下:

    int read( ) throws IOException

  2)       br.readline()

    从控制台读取一行字符串,返回String类型。readline()函数定义如下:

    String readLine( ) throws IOException

      样例:

    char c;

    c = (char)br.read();

    System.out.printfln(c);

 

    String str;

    str = br.readline();

    System.out.println(str);

 

2、输出:

  输出常用的是print()、println()方法,这些方法都由PrintStream类定义。System.out是称PrintStream类对象的一个引用。

  样例:

    System.out.println(“Hello World!”);

 

  PrintStream类继承自OutputStream类。PrintStream类重写了write()方法,也可使用write()方法向控制台写内容。

  样例:

    int b;

    b = ‘A’;

    System.out.write(b);

    System.out.write(‘\n’);

       write()方法不经常使用,因为print()和println()方法更方便。

 

3、通过Scanner类从控制台输入:

  java.util.scanner是Java5引入的特性。

  1)       使用Scanner类读取字符串:

    一般采用next()、或nextline()方法读取字符串,读取线采用hasNext()、或hasNextline()方法判断是否还有输入。

    样例:

      Scanner scan = New Scanner(System.in);

      if(scan.hasnext()) {

        String str = scan.next();

        System.out.Println(str);

      }

    next()和nextline()方法的区别:

    a)       nextline()读取整行内容,包含空白字符,直到行结尾Enter结束。

    b)       next()无法读取空白字符。首个有效字符前的空白字符会被忽略。读取到有效字符后的空白字符结束。

  2)       使用Scanner类读取其他数据类型:

    整数:hasNextInt() nextInt()

    浮点数:hasNextFloat() nextFloat()

二、文件系统IO

文件操作的类是FileInputStream和FileOutputStream。

1、输入:

  通过文件名创建FileInputStream对象:

    FileInputStream fStream = new FileInputStream("d:/helllo/hello.txt");

  通过文件对象来创建FileInputStream对象:

    File filehandle = new File("d:/helllo/hello.txt");

    FileInputStream fStream = new FileInputStream(filehandle);

 

  FileInputStram类的方法:

    1)       public void close() throws IOException{}

    关闭文件。

    2)       potected void finallize() throws IOException{}

    清除该文件的链接。

    3)       public int read(int r) throws IOException{}

    从InputSteam中读取指定字节的数据,并自动指向下一个字节数据。读取到末尾返回-1。

    4)       public int read(byte[] b) throws IOException{}

    从InputeStream中读取b.length字节的数据。返回读取的字节数,读取到默认返回-1。

    5)       public int available() throws IOException{}

    返回下一次对此输入流可调用方法可不受阻塞读取的字节数。

   

  样例:

           FileInputStream fStream = new FileInputStream(“d:/helllo/hello.txt”);

           int size = fStream.available();

           for(i= 0; i<size; i++)

           {

    Systemm.out.println((char)fStream.read())

   }

   fStream.close();

 

2、输出:

  通过文件名创建FileOutputStream对象:

    FileOutputStream fStream = new FileOutputStream("d:/helllo/hello.txt");

  通过文件对象来创建FileOutputStream对象:

    File fHandle =new File("d:/helllo/hello.txt");

    FileOutputStream fStream = new FileOutputStream(fHandle);

 

  FileOuputeStram类的方法:

    1)       public void close() throws IOException{}

    关闭文件。

    2)       potected void finallize() throws IOException{}

    清除该文件的链接。

    3)       public void write(int r) throws IOException{}

    把参数字节值输入到文件流中。

    4)       public void wtire(byte[] b) throws IOException{}

    把b.length字节的数据输入到文件流中。

    样例:

      FileOutputStream fStream = new FileOutputStream (“d:/helllo/hello.txt”);

      char[] cHello = {‘H’, ’e’, ’l’, ’l’, ’o’, ‘!’};

      fStream.write(cHello);

      fStream.close();

 

  更多细节,请详细了解:File类、FileReader类、FileWriter类。

三、文件夹操作

File类中有两个方法来创建文件夹:

  1)       mkdir():创建一个文件夹,成功返回true

  2)       mkdirs():循环创建一个文件夹、及其所有父文件夹

 

File类中有如下方法读取文件夹:

  1)       isDirectory():判断File对象是否为一个文件夹

  2)       list():读取File对象包含的文件、文件夹列表

 

File类中删除文件夹、或文件:

  1)       delete():删除文件

  2)       deleteFolder():删除文件夹

  样例:

    File folder = new File("/tmp");

    File[] files = folder.filelistFiles();

    if(files != NULL) {

      for(File f : files) {

        if (f.isDirectory()) {

          deleteFolder(f);

        } else {

          f.delete();

        }

      }

    }

    folder.delete() 

posted @ 2019-11-11 18:40  小拙  阅读(207)  评论(0编辑  收藏  举报