您的位置:首页 > 编程语言 > Java开发

java中的I/O流

2015-08-02 19:57 543 查看
  java中定义的处理输入输出的类都存放在java.io的包中。其中所有的输入流都是抽象类InputStream或者抽象类Reader的子类;所有的输出流都是抽象类OutputSteam或者抽象类Writer的子类。

File类

  首先在认识java输入输出刘之前应该先认识一下File类,文件类有四个构造器,一般采用第二个构造器来构造。




下面举一下例子来说明一下:

public class Test {
    public static void main(String[] args) {
        //创建一个文件,采用构造器2,通过路径名来指定文件对象。
        File file = new File("D:\\11.txt");//创建文件
        //判断文件是否存在,如果文件不存在则创建一个文件。
        if(file.exists()){
            try {
                //创建文件
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        //删除文件。
        file.delete();
    }
}


InputStream类

  InputStream是字节输入流,输入以字节为单位。FileInputStream继承该类。FileOutputStream类,是文件字节输入流。

public class Test {
    public static void main(String[] args) {
        //读文件
        //创建读取字节存储的字节数组。
        byte[] arr = new byte[1024];
        try {
            //创建文件输入流,读取源文件
            FileInputStream fis = new FileInputStream(file);
            //读取文件内容
            int num = fis.read(arr);
            while(num != -1){
                //将文件内容装换成字符串输出
                System.out.println(new String(arr, 0, num));
                //释放与该流文件的关联的系统资源
                num = fis.read(arr);    
            }
            fis.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {

            e.printStackTrace();
        }
    }
}


Reader类

  Reader类并不是InputStream类的替代者,它只是在读取数据的方面简化了方法。Reader类读取数据以字符为单位,InputStreamReader类,BufferedReader类继承Reader类。

public class Test{
    public static void main(String[] args) {
        File file = new File("D:\\11.txt");
            //读入
            try {
                //创建输入流读字节
                FileInputStream fis = new FileInputStream(file);
                //创建输入流读字符
                InputStreamReader is = new InputStreamReader(fis);
                //创建缓冲输入流读行
                BufferedReader br = new BufferedReader(is);
                //读一整行,赋值给字符串
                String s= br.readLine();
                while(s!=null){
                    System.out.println(s);
                    s= br.readLine();
                }
                //释放资源
                fis.close();
                is.close();
                br.close(); 
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {   
                e.printStackTrace();
            }
    }
}


OutputStream类

  OutputStream是字节输出流,输出以字节为单位。FileOutputStream继承该类。FileOutputStream类,是文件字节输出流。

public class Test {
    public static void main(String[] args) {
        //写文件。
        String words = "往文件中写东西啦!";//定义往文件中输入的东西。
        byte[] array  = words.getBytes();//将字符创转换成字节数组。
        try {
            //创建文件输入流对象,指向目的地
            FileOutputStream  fos = new FileOutputStream(file);
            //将字节数组写到到文件中。
            fos.write(array);
            //冲刷文件缓冲区
            fos.flush();
            //释放与该流文件的关联的系统资源。
            fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


Writer类

  Writer类并不是OutputStream类的替代者,它只是在 写数据的方面简化了方法。Writer类写数据以字符为单位,OutputStreamWriter类,BufferedWriter类继承Reader类。

public class Test{
    public static void main(String[] args) {
            //写出
            try {
                //创建输出流读字节
                FileOutputStream fos = new FileOutputStream(file);
                //创建输出流读字符
                OutputStreamWriter os = new OutputStreamWriter(fos);
                //创建缓冲输出流读行
                BufferedWriter bw = new BufferedWriter(os);
                 //读入内容。
                bw.write("你是不是傻!");
                //冲刷缓冲区
                bw.flush();
                //释放资源
                bw.close();
                os.close();
                fos.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: