CORE JAVA (十) 之 IO

http://blog.csdn.net/yuchen2008/archive/2006/12/21/1451180.aspx

知识点: IO

什么是 IO ?输入输出 input output, 这是指以程序为中心,就是站在程序的角度说的,程序其实是 JVM, 例如:写程序将一些信息存储到文件中,这叫输出(写入);如果程序从文件得到信息,就叫输入(读取)

 

文件:

什么是文件?指计算机中的文件和目录

文件的作用就是存取查看

文件和 java 中的 File 类: File 相当于指向文件的指针,它本身并不是文件,如果我们想通过程序来操作和使用文件,就需要使用 File

/**

  * 知识点:

  * File 类:文件和目录的创建

  * 程序目标:

  * 测试 File 类和常用的方法

  */

package MY.module10.File;

import java.io.*;

public class TestFile {

       public static void test1(){

              File file1=new File("h://mytest//test1");

              if(!file1.exists()){// 如果没有创建该对象指向的目录,就创建它

                     file1.mkdirs();//mkdirs mkdir 的区别在于, mkdirs 创建整个目录

              }

             

              File file2=new File(file1,"test2");

              if(!file2.exists()){

                     file2.mkdir();

              }

             

              File file3=new File("h://mytest//test1","test3");

              if(!file3.exists()){

                     file3.mkdir();

              }

             

              File file4=new File(file3,"text.txt");

              if(!file4.exists()){

                     try {

                            file4.createNewFile();

                     } catch (IOException e) {

                            // TODO Auto-generated catch block

                            e.printStackTrace();

                     }

              }

//          file1.delete();//error 必须先删除子目录或文件

              System.out.println(file4.getAbsolutePath());

              System.out.println(file4.getPath());

              System.out.println(file4.getParent());

              System.out.println(file4.canRead());

              System.out.println(file4.isDirectory());

              System.out.println(file1.isDirectory());

              System.out.println(file4.length());

       }

       /**

         * @param args

         */

       public static void main(String[] args) {

              // TODO Auto-generated method stub

              test1();

       }

 

}

发现问题:如果让我们连接服务器,在服务器远程建立一个文件,该怎么做呢?

需要处理跨平台性:

对于命令:File f2=new file(“d://abc//789//1.txt”)

这个命令不具备跨平台性,因为不同的 OS 的文件系统的分隔符是不相同。

使用 file 类的 separtor 属性,返回当前平台文件分隔符。

File newD = new File("aa"+File.separator+"bb"+File.separator+"cc");

       File newF = new File(newD,"mudi.txt");

       try{

       newD.mkdirs();

       newF.createNewFile();

       }catch(Exception e){}

 

 

 

I/O 框架:

什么是输入流?从外界流向程序,程序从外界得到资源

什么是输出流?从程序到外界的过程

比如:我们从文件中得到内容,并且显示在屏幕上,从文件得到内容,是输入(读取),将内容显示在屏幕上,显示到终端上是输出(写入),始终以程序为中心

什么是字节流?以字节为单位的数据传输方法进行传输

什么是字符流?以字符为单位的数据传输方法进行传输

什么是节点流?就是在输入输出两端建立一个管道

什么是处理流?给管道增加功能,比如加粗,过滤功能等等

 

                    字节流

字符流

输入流

节点流

FileInputStream

FileReader

处理流

BufferedInputStream

BufferedReader

输出流

结点流

FileOutStream

FileWriter

处理流

BufferedOutStream

BufferedWriter

 

字节流的作用?当我们处理的是二进制文件的时候,需要用字节流来进行传输,不能用字符流

什么是二进制文件?里面都是机器码, 010101 的机器码,他们需要按字节方式传输

未处理问题:什么情况下我们需要传输一个二进制文件呢?二进制文件对我们来说有什么用?

字符流的作用?以字符为单位传输数据,处理文本文件,里面的方法比较好用,简单

 

字节流:

父类: InputStream     OutputStream

InputStream:

Int Read() :一个一个字节的读取流中的数据,读一个,指针指向下一个,再读,再指向下一个,返回为整数,这个整数是编码,比如,文档有 h 这个字符,那么返回的是这个字符的编码 104 ,那么,如果我想打印出 h ,需要强制转换 , 如果为 -1 ,说明没有读取到内容

Int read(byte[] b): 读取流中的内容,一个一个读,把读的内容存到数组中,返回 int 型,也就是数组的长度

int available(): 返回可从流中读取的字节数。

skip(long): 丢弃了流中指定数目的字符。

boolean markSupported()

void mark(int)

void rese()

 

OutputStream:

三个基本的write()方法

void write():

void write(byte[])

void write(byte[], int , int)

其它方法

void close(): 关闭流,如使用过滤器流,关闭栈顶部的流,会关闭其余的流。

void flush(): 允许你强制执行写操作。

注:在流中 close() 方法由程序员控制。因为输入输出流已经超越了 JVM 的边界,所以有时可能无法回收资源。

原则:凡是跨出虚拟机边界的资源都要求程序员自己关闭,不要指望垃圾回收。

 

FileInputStream:

/**

  * 知识点:

  * FileInputStream: 字节流中的管道,节点流,输入

  * read()

  * 程序目标:

  * 从一个目录中的文件里得到里面的内容,显示在终端上

  */

package MY.module10.inputstreams;

import java.io.*;

public class TestFileInputStream {

       public static void test(){

              File f=new File("h://mytest//test1//test3","hello.txt");

              if(!f.exists()){

                     try {

                            f.createNewFile();

                     } catch (IOException e) {

                            // TODO Auto-generated catch block

                            e.printStackTrace();

                     }

              }

             

              try {

                     FileInputStream fs=new FileInputStream(f);

                     int i=0;

                     while((i=fs.read())!=-1){

                            System.out.print((char)i);

                     }

              } catch (FileNotFoundException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

       }

       /**

         * @param args

         */

       public static void main(String[] args) {

              // TODO Auto-generated method stub

              test();

       }

 

}

/**

  * 知识点:

  * 使用 read(byte[] b)

  * 程序目标:

  * test1 :使用字节数组方式显示读取的内容

  * 发现问题:字节数组大小,开多大呢?两种解决办法

  * test2: 第一种:定义一个小一些的数组,通过循环显示所有内容,因为

  * read() 方法是一个一个读,跟指针一样,第一次写 read() 后,再写一次

  * 就会从上次结尾后开始读

  * test3: 第二种:先得到目录文件中的内容大小,然后开这么大的空间

  */

package MY.module10.inputstreams;

import java.io.*;

public class TestFileInputStream2 {

       public static void test1(){

              FileInputStream fs=null;

              try {

                     fs=new FileInputStream("h://mytest//test1//test3//hello.txt");

                     byte[] b=new byte[32];

                     int length=fs.read(b);

                     System.out.println(length);

                     System.out.println(new String(b,0,length));

                     fs.close();

              } catch (FileNotFoundException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

       }

      

       public static void test2(){

              FileInputStream fs=null;

              try {

                     fs=new FileInputStream("h://mytest//test1//test3//hello.txt");

                     byte[] b=new byte[10];

                     int length=fs.read(b);

                     while(length==10){

                            System.out.println(new String(b,0,length));

                            length=fs.read(b);

                     }

                     System.out.println(new String(b,0,length));

                     fs.close();

              } catch (FileNotFoundException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

       }

      

       public static void test3(){

              File file=new File("h://mytest//test1//test3//hello.txt");

              long length=file.length();

              FileInputStream fs=null;

              try {

                     fs=new FileInputStream(file);

                     byte[] b=new byte[(int)(length)];

                     int x=fs.read(b);

                     System.out.println(new String(b,0,x));

                     fs.close();

              } catch (FileNotFoundException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

             

       }

       /**

         * @param args

         */

       public static void main(String[] args) {

              // TODO Auto-generated method stub

//          test1();

//          test2();

              test3();

       }

 

}

 

FileOutputStream:

/**

  * 知识点:

  * 输出和输入输出

  * 程序目标:

  * test1: 将一个字符串写入一个文件中

  * test2: 从一个文件读取字符串,并将这些内容写入到另一个文件中

  */

package MY.module10.outputstreams;

import java.io.*;

public class TestFileOutputStream {

       public static void test1(){

              FileOutputStream fs=null;

              try {

                     fs=new FileOutputStream("h://mytest//test1//test3//hello.txt");

                     String s="JAVA I LOVE YOU!";

                     fs.write(s.getBytes());

                     fs.close();

              } catch (FileNotFoundException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

       }

      

       public static void copyFile(String file1,String file2){

              File f1=new File(file1);

              File f2=new File(file2);

             

              FileInputStream fis=null;

              FileOutputStream fos=null;

              try {

                     fis=new FileInputStream(f1);

                     fos=new FileOutputStream(f2);

                     int i=0;

                     while((i=fis.read())!=-1){

                     //       fos.write((char)i);// 写入文件就不用转换为 char 了,文档可以辨别出来数字的含义

                            fos.write(i);

                     }

                     fis.close();

                     fos.close();

              } catch (FileNotFoundException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

 

       }

       /**

         * @param args

         */

       public static void main(String[] args) {

              // TODO Auto-generated method stub

//          test1();

              String file1="h://mytest//test1//test3//hello.txt";

              String file2="h://mytest//test1//test3//text.txt";

              copyFile(file1,file2);

       }

 

}

 

在文件中追加一些字符:

FileOutputStream outfile = new FileOutputStream(“results.dat”,true);

              参数为 true 时输出为添加,为 false 时为覆盖。  

       FileOutputStream 类代码: ( 为什么能建文件 )

              Public FileOutputStream(String name){

                     This(name!=null new File(String):null,false);

              }

 

BufferedInputStream

输入:字节流中的处理流

/**

  * 知识点:

  * BufferedInputStream

  * 程序目标:

  * 读取文件中的内容显示在终端上,把管道的功能加强

  */

package MY.module10.inputstreams;

import java.io.*;

public class BufferInputStream {

       public static void  test1(){

              FileInputStream fis=null;

              BufferedInputStream bis=null;

              try {

                     fis=new FileInputStream("h://mytest//test1//test3//hello.txt");

                     bis=new BufferedInputStream(fis);

//                 int j=fis.available();

                     byte[] b=new byte[5];

                     int i=0;

                     i=bis.read(b);

                     while(i==5){

                            System.out.print(new String(b));

                            i=bis.read(b);

                     }

                     System.out.println(new String(b,0,i));

                     bis.close();

              } catch (FileNotFoundException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

       }

       /**

         * @param args

         */

       public static void main(String[] args) {

              // TODO Auto-generated method stub

              test1();

       }

 

}

 

BufferedOutputStream:

/**

  * 知识点:

  * BufferedOutputStream: 输出:字节流中的处理流

  * 程序目标:

  * 在文件中写入一句话

  */

package MY.module10.outputstreams;

import java.io.*;

public class TestBufferedOutputStream {

       public static void test1(){

              BufferedOutputStream bos=null;

              try {

                     bos=new BufferedOutputStream(new FileOutputStream("h://mytest//test1//test3//hello.txt",true));

                     String s="zhen de ma?";

                     bos.write(s.getBytes());

                     bos.close();

                     } catch (FileNotFoundException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              } catch (IOException e) {

                            // TODO Auto-generated catch block

                            e.printStackTrace();

                     }

             

       }

       /**

         * @param args

         */

       public static void main(String[] args) {

              // TODO Auto-generated method stub

              test1();

       }

 

}

 

字符流:

抽象父类: Reader  Writer

 

FileReader:

/**

  * 知识点:

  * 字符流:输入:结点流: FileReader

  * 程序目标:

  * 从文件中得到字符并输出到终端上

  */

package MY.module10.Reader;

import java.io.*;

public class TestFileReader {

       public static void test(){

              FileReader fr=null;

              try {

                     File file=new File("h://mytest//test1//test3//hello.txt");

                     fr=new FileReader(file);

                     long length=file.length();

                     char[] c=new char[(int)(length)];

                     fr.read(c);

                     System.out.println(c);

                     fr.close();

//                 char[] c=new char[5];

//                 int i=0;

//                 i=fr.read(c);

//                 while(i==5){

//                        System.out.println(new String(c));

//                        i=fr.read(c);

//                 }

//                 System.out.println(new String(c,0,i));

//                 fr.close();

                    

              } catch (FileNotFoundException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

             

       }

       /**

         * @param args

         */

       public static void main(String[] args) {

              // TODO Auto-generated method stub

              test();

       }

 

}

 

 

 

 

 

 

FileWriter

/**

  * 知识点:

  * FileWriter,FileReader

  * 程序目标:

  * 使用字符流,从一个文件得到内容并复制到另一个文件

  */

package MY.module10.FileWriter;

import java.io.*;

public class TestFileWriter {

       public static void test(){

              FileWriter fw=null;

              try {

                     fw=new FileWriter("h://mytest//test1//test3//hello.txt",true);

                     String s="I Love Java!";

                     fw.write(s);

                     fw.close();

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

             

       }

       public static void copyFile(String file1,String file2){

              FileReader fr=null;

              FileWriter fw=null;

              try {

                     fr=new FileReader(file1);

                     fw=new FileWriter(file2);

                     int i=0;

                     while((i=fr.read())!=-1){

                            fw.write(i);

                     }

                     fr.close();

                     fw.close();

              } catch (FileNotFoundException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

       }

       /**

         * @param args

         */

       public static void main(String[] args) {

              // TODO Auto-generated method stub

//          test();

              String file1="h://mytest//test1//test3//hello.txt";

              String file2="h://mytest//test1//test3//text.txt";

              copyFile(file1,file2);

       }

 

}

 

BufferedReader:

/**

  * 知识点:

  * BufferedReader 字符流 - 输入 - 处理流

  * 程序目标:

  * 测试 BufferedReader

  * 注意: readLine() ,比较好用

  */

package MY.module10.Reader;

import java.io.*;

public class TestBufferedReader {

       public static void test(){

              BufferedReader br=null;

              try {

                     br=new BufferedReader(new FileReader("H://mytest//test1//test3//hello.txt"));

                     String s=null;

                     while((s=br.readLine())!=null){

                            System.out.println(s);

                     }

                     br.close();

              } catch (FileNotFoundException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

             

       }

       /**

         * @param args

         */

       public static void main(String[] args) {

              // TODO Auto-generated method stub

              test();

       }

 

}

BufferedWriter:

/**

  * 知识点:

  * BufferedWriter: 输出流 - 字符流 - 处理流

  * 程序目标:

  * 使用 BufferedWriter 输出内容到文件

  */

package MY.module10.Writer;

import java.io.*;

public class TestBufferedWriter {

       public static void test(){

              FileWriter fw=null;

              BufferedWriter bw=null;

              try {

                     fw=new FileWriter("h://mytest//test1//test3//hello.txt" );

                     bw=new BufferedWriter(fw);

                     String s="China";

                     bw.write(s);

                     bw.close();

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

       }

       /**

         * @param args

         */

       public static void main(String[] args) {

              // TODO Auto-generated method stub

                     test();

 

       }

}

字节数组流: ByteArrayInputStream,ByteArrayOutStream

/**

  * 知识点:

  * 字节数组 ByteArrayInputStream,ByteArrayOutStream

  * 程序目标:

  * 将一个字符串转换为大写,使用字节数组流

  * 注意: ByteArrayOutStream write 方法是将内容写入字节数组中

  */

package MY.module10.TestArray;

import java.io.*;

public class TestArray {

       public static void test(){

              ByteArrayInputStream bis=null;

              ByteArrayOutputStream bos=null;

              String s="hello world";

              bis=new ByteArrayInputStream(s.getBytes());

              bos=new ByteArrayOutputStream();

              toDaxie(bis,bos);

              String jieguo=bos.toString();

              System.out.println(jieguo);

              try {

                     bis.close();

                     bos.close();

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

 

       }

       public static void toDaxie(ByteArrayInputStream bis,ByteArrayOutputStream bos){

              int i;

              while((i=bis.read())!=-1){

                     int j;

                     j=Character.toUpperCase(i);

                     bos.write(j);

              }

       }

       /**

         * @param args

         */

       public static void main(String[] args) {

              // TODO Auto-generated method stub

              test();

       }

 

}

 

PipedInputStream,PipedOutputStream:

/**

  * 知识点:

  * Piped

  * 用于线程间的通讯

  * 程序目标:

  * 一个线程控制输出,一个控制输入

  */

package MY.module10;

import java.io.*;

public class piped {

       public static void test(){

              send s=new send();

              gend g=new gend();

              PipedOutputStream pos=s.getPos();

              PipedInputStream pis=g.getPis();

              try {

                     pos.connect(pis);

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

              s.start();

              g.start();

       }

       /**

         * @param args

         */

       public static void main(String[] args) {

              // TODO Auto-generated method stub

              test();

       }

 

}

class send extends Thread{

       PipedOutputStream pos=new PipedOutputStream();

      

       public PipedOutputStream getPos() {

              return pos;

       }

      

       public void run(){

              String s="hello world!";

              try {

                     pos.write(s.getBytes());

                     pos.close();

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

       }

}

class gend extends Thread{

       PipedInputStream pis=new PipedInputStream();

      

       public PipedInputStream getPis() {

              return pis;

       }

 

       public void run(){

             byte[] b=new byte[32];

              try {

                     int length=pis.read(b);

                     System.out.println(new String(b,0,length));

                     pis.close();

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

       }

}

 

转换流: OutputStreamWriter,InputStreamReader:

/**

  * 知识点:

  * 转换流

  * 程序目标:

  * 将字节流转换为字符流进行输入输出

  */

package MY.module10.bytetochar;

import java.io.*;

public class TestByteToChar {

       public static void test1() throws IOException{

              FileOutputStream fos=null;

              fos=new FileOutputStream("h://mytest//test1//test3//hello.txt");

              OutputStreamWriter osw=new OutputStreamWriter(fos);

              BufferedWriter bw=new BufferedWriter(osw);

              String s="hello world!";

              bw.write(s);

              bw.close();

       }

       public static void test2() throws IOException{

              BufferedReader br=null;

              br=new BufferedReader(new InputStreamReader(new FileInputStream("h://mytest//test1//test3//hello.txt")));

              String s=null;

              while((s=br.readLine())!=null){

                     System.out.println(s);

                     s=br.readLine();

              }

              br.close();

       }

       /**

         * @param args

         */

       public static void main(String[] args) {

              // TODO Auto-generated method stub

              try {

                     test1();

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

              try {

                     test2();

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

       }

 

}

System.in:

/**

  * 知识点:

  * System.in

  * 程序目标:

  * 从键盘得到输入的字符,然后打印到屏幕上,并且保存在一个文件中

  */

package MY.module10.bytetochar;

import java.io.*;

public class TestSystemin {

       public static void test1() throws IOException{

              InputStreamReader isr=new InputStreamReader(System.in);

              OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("h://mytest//test1//test3//hello.txt",true));

              BufferedReader br=new BufferedReader(isr);

              BufferedWriter bw=new BufferedWriter(osw);

              String s=br.readLine();

              while(!s.equals("goodbye")){

                     System.out.println(s);

                     s=br.readLine();

                     bw.write(s);

              }

              bw.close();

              br.close();

       }

       /**

         * @param args

         */

       public static void main(String[] args) {

              // TODO Auto-generated method stub

              try {

                     test1();

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

       }

 

}

PrintWriter:

/**

  * 知识点:

  * printWriter

  * 程序目标:

  * 将信息输出到一个文件中

  */

package MY.module10.printWriter;

import java.io.*;

public class printWriter {

       public static void test(){

              PrintWriter pw=null;

              try {

                     pw=new PrintWriter(new FileWriter("h://mytest//test1//test3//hello.txt"));

                     pw.println("asdkfjlakjdsflkj");

                     pw.println("hello world");

                     pw.close();

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

             

       }

       /**

         * @param args

         */

       public static void main(String[] args) {

              // TODO Auto-generated method stub

              test();

       }

 

}

对象序列化: ObjectOutputStream

什么是对象序列化?就是将对象输出到文件中,属于对象流,可以对对象进行文件输入输出,作用就是可以将一个类中对象的信息输出到远程(或本地)文件中,并可以从里面读取这些对象信息

这个对象的类需要实现 Serializable 接口:这个接口只是一个标识

/**

  * 知识点:

  * 对象序列化: ObjectOutputStream,ObjectInputStream

  * Serializable 接口:要想让一个类的对象序列化,必须让该类实现

  * Serizlizable 接口

  * transient: 如果不想让对象中的一个属性序列化,就使用这个修饰属性

  * 程序目标:

  * 将一个类的对象写入到一个文件中,并从这个文件中得到这个对象,

  * 并且打印出来

  */

package MY.module10.serializables;

import java.io.*;

public class TestObject {

       public static void test1() throws FileNotFoundException, IOException{

              ObjectOutputStream oos=null;

              oos=new ObjectOutputStream(new FileOutputStream("h://mytest//hello.txt"));

              Person p=new Person("luzhen",23);

              oos.writeObject(p);

              oos.close();

       }

       public static void test2() throws FileNotFoundException, IOException, ClassNotFoundException{

              ObjectInputStream ois=null;

              ois=new ObjectInputStream(new FileInputStream("h://mytest//hello.txt"));

              Person p1=(Person)ois.readObject();

              System.out.println(p1.getName()+":"+p1.getAge());

              System.out.println(p1);

              ois.close();

       }

 

       public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {

              // TODO Auto-generated method stub

//          test1();

              test2();

       }

 

}

class Person implements Serializable{

       private String name;

       private transient int age;

       Person(String name, int age) {

              super();

              // TODO Auto-generated constructor stub

              this.name = name;

              this.age = age;

       }

       public int getAge() {

              return age;

       }

       public void setAge(int age) {

              this.age = age;

       }

       public String getName() {

              return name;

       }

       public void setName(String name) {

              this.name = name;

       }

       @Override

       public String toString() {

              // TODO Auto-generated method stub

              StringBuffer sb=new StringBuffer();

              sb.append(name+":");

              sb.append(age);

              return sb.toString();

       }

      

}

你可能感兴趣的:(java,String,File,null,Class,byte)