Java学习笔记之:Java 流

一、介绍

Java.io包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。

Java.io包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。

一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。

二、笔记

1.IO

import java.io.File;

/**
 * IO流 1.File类:可以操作指定路径的文件,提供了对文件的增删改查
 *
 *
 *
 */
public class IO {
    public static void main(String[] args) {
        try {
            //test();
            new IO().check("D:\\    ");
        } catch (Exception e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
    }

    public static void test() throws Exception {
        String path = "D:\\xx;
        // 查看文件
        // 获取文件路径方法(在网络路径中才能看出效果)
        File file = null;
        file = new File(path);
        // System.out.println(file.getAbsolutePath());
        //
        // String[] names = file.list();
        // for (String string : names) {
        // System.out.println(string);
        // }

        // 获取当前路径下的所有的文件的文件对象
        // File[] files=file.listFiles();
        // for (File f : files) {
        // System.out.println(f.getPath());
        // System.out.println(f.getParent());
        // }

        // 创建文件
        // path+="\\a.txt";
        // file=new File(path);
        // boolean result=file.createNewFile();
        // System.out.println(result);

        // 创建文件夹
        // path+="\\text";
        // file=new File(path);
        // boolean result=file.mkdir();
        // System.out.println(result);

        // 递归创建文件夹
        // path += "\\text\\abc";
        // file = new File(path);
        // boolean result = file.mkdirs();
        // System.out.println(result);

        // 重命名,并移动路径
        path += "\\abc.txt";
        file = new File(path);
        file.renameTo(new File("D:\\xx\\abcd.txt"));
    }

    public void check(String path) {
        File file = new File(path);
        File[] files = file.listFiles();
        for (File f : files) {
            if (f.isFile()) {
                System.out.println(f.getAbsolutePath());
            }
            else {
                check(f.getAbsolutePath());
            }
        }
    }

}

2.stream

/**
 * 流:可以理解数据的滚动,就是一个数据流
1.按方向分(程序员角度):输入流,输出流
2.按处理单位:字节流(OutputStream,InputStream的子类都是字节流),字符流
3.按功能:节点流,
 *
 *
 *
 */
public class Stream {

    public static void main(String[] args) {

        try {
            // file();
            // byteArray();
            obj();
        } catch (Exception e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
    }

    public static void file() {
        try {
            FileInputStream inputStream = new FileInputStream(new File(
                    "D:\\xx\\abcd.txt"));
            FileOutputStream outputStream = new FileOutputStream(
                    "D:\\xx\\a.txt");
            byte[] bs = new byte[10];
            int len = 0;
            while ((len = inputStream.read(bs)) != -1) {
                // String msg = new String(bs, 0, len);
                // System.out.println(msg);

                outputStream.write(bs, 0, len);
            }
            inputStream.close();
            outputStream.close();
        } catch (Exception e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
    }

    /**
     * 字节数组流是最小单位的流,一般处理不了的都可以用它
     *
     * @throws IOException
     */
    public static void byteArray() throws IOException {

        String string = "ABCDEFG";
        byte[] bs = string.getBytes();
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        ByteArrayInputStream inputStream = new ByteArrayInputStream(bs);

        int len = 0;
        byte[] r = new byte[2];
        // while ((len=inputStream.read())!=-1) {//默认的读取方法,每次读取一个字节
        while ((len = inputStream.read(r)) != -1) {
            String msgString = new String(r, 0, len);
            System.out.println(msgString);
        }

    }

    // 对象流
    public static void obj() throws Exception {
        ObjectOutputStream outputStream = new ObjectOutputStream(
                new FileOutputStream("D:\\博客\\a.txt"));
        User user = new User(20, "tom");
        outputStream.writeObject(user);// 如果需要将一个对象写入到流中,需要实现
        outputStream.flush();
        outputStream.close();
        System.out.println("ok");
        ObjectInputStream inputStream = new ObjectInputStream(
                new FileInputStream("D:\\xx\\a.txt"));
        Object object = inputStream.readObject();
        if (object instanceof User) {
            System.out.println(((User) object).getName());
            System.out.println(((User) object).getAge());
        }
    }

    // 字符串缓冲流
    public static void stringBuffer() throws Exception {
        StringBufferInputStream inputStream = new StringBufferInputStream("ABCDE");
        int len = 0;
        byte[] bs = new byte[1024];
        while ((len = inputStream.read(bs)) != -1) {
             String msg = new String(bs, 0, len);
         System.out.println(msg);

        }
    }
}

3.字符流

/**
 * 字符流:只能处理文字类文件,不能处理图片
 * 总结
 * 1.输入流 输出流
 * 2.字节流(OutputStream,InputStream的子类都是字节流)
 * 字符流(reader和writer的子类)
 * 3.按功能:节点流和处理刘
 *
 *
 *
 */
public class CharacterStream {

    public static void main(String[] args) {
        try {
            file();
        } catch (Exception e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
    }

    public static void file() throws Exception {

        FileReader reader = new FileReader(new File("D:\\xx\\abcd.txt"));
        FileWriter writer = new FileWriter(new File("D:\\xx\\abcd.txt"));
        // while (reader.ready()) {
        // System.out.println(reader.read());
        // }

        int len = 0;
        char[] cs = new char[1024];
        while ((len = reader.read(cs)) != -1) {
            System.out.println(new String(cs, 0, len));

        }
        reader.close();
    }

    public static void buffer() throws Exception {
        BufferedReader reader = new BufferedReader(new FileReader(
                "D:\\xx\\abcd.txt"));
        BufferedWriter writer = new BufferedWriter(new FileWriter(
                "D:\\xx\\abcd.txt"));
        int len = 0;
        char[] cs = new char[1024];
        while ((len = reader.read(cs)) != -1) {
            writer.write(cs, 0, len);
        }
        while (reader.ready()) {
            System.out.println(reader.readLine() + "|||");
            writer.write(reader.readLine());
        }
        reader.close();
        writer.close();
    }
}
时间: 2024-10-10 21:24:12

Java学习笔记之:Java 流的相关文章

java学习笔记16--I/O流和文件

本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理设备之间的数据传输,对数据的操作是通过流的方式,Java用于操作流的对象都在IO包中 输入/输出流可以从以下几个方面进行分类 从流的方向划分: 输入流.输出流 从流的分工划分: 节点流.处理流 从流的内容划分: 面向字符的流.面向字节的流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对

java学习笔记3——java关键字

java学习笔记3——java关键字 虽然老师说不用刻意的去记忆,但是我还是在网上找到了非常详细的注解,再次收藏 关键字的类型表: 各个关键字的详细注解和实例,按首字母排序: 1.abstract abstract 关键字可以修改类或方法. abstract 类可以扩展(增加子类),但不能直接实例化. abstract 方法不在声明它的类中实现,但必须在某个子类中重写. -示例- public abstract class MyClass{ } public abstract String my

Java学习笔记(Java语言规范,API,JDK,IDE)

Java语言规范:java.sun.com/docs/books/jls 三个版本的API:J2SE J2EE J2ME 1. J2SE 客户端独立应用程序或者applet 2. J2EE 服务端应用程序 [Java Servlets&JavaServer Page] 3. J2ME 移动设备变成 JDK为Java开发提供一个开发环境(IDE) Java学习笔记(Java语言规范,API,JDK,IDE)

Java学习笔记-7.Java IO流

一.输入/输出流 1.流:不同类型的输入.输出源    数据流:输入或输出的数据 Java数据流的所有接口和类都是在java.io包中定义的,因此应在程序开头加入 import java.io.* 2.流的分类: (1)从流的流动方向来看,可以将IO流分为输入流和输出流 输入流:数据信息从某个地方流向程序中 输出流:数据信息从程序中发送到某个目的地 (2)从流的数据处理单位来看,可以将IO流分为字节流和字符流 字节流:以字节方式处理的二进制数据 字符流:以字符方式处理的数据流(Java使用Uni

java学习笔记1——java环境的搭建

1.java的安装路径最好没有中文和空格,因为如果有中文或者空格,在以后的编译过程中很容易出现莫名其妙的错误 2.安装java的过程中,安装好jdk后弹出安装JRE的界面,此时不用继续安装直接退出即可,因为JDK包含JRE,就算再装JRE,也是与JDK中的JRE是一样的 3.java环境搭建的原因,是为了方便程序编译的时候可以直接在DOS命令中输入java相关的命令就可以直接调用,而不需要每次都要尽到java命令所在的目录,因为当你输入此命令时,windows会找两次,第一次在你输入的目录中寻找

java学习笔记之转换流

举例子: 1 import java.io.*; 2 public class TestTransForm1 { 3 public static void main(String[] args) { 4 try { 5 OutputStreamWriter osw = new OutputStreamWriter( 6 new FileOutputStream("d:\\bak\\char.txt")); 7 osw.write("mircosoftibmsunapplehp

Java学习笔记-10.io流

1.输入流,只能从中读取数据,而不能向其写出数据.输出流,只能想起写入字节数据,而不能从中读取. 2.InputStream的类型有: ByteArrayInputStream 包含一个内存缓冲区,字节从中取出. FileInputStream 从文件中获得字节. ObjectInputStream 用来恢复被序列化的对象. PipedInputStream 管道输入流,读取管道内容.多和PipedOutputStream一起用于多线程通信. SequenceInputStream 是多种输入流

java学习笔记之字符流文件复制

字符文件复制 1 FileReader fr =new FileReader("b.txt");//绑定源文件 2 FileWriter fw= new FileWriter("a.txt"); 3 char[] c= new char[1024]; 4 int len=0; 5 //循环读取 6 while((len=fr.read(c))!=-1){ 7 fw.write(c,0,len); 8 9 } 10 //关流 11 fw.close(); 12 fr.

Java学习笔记-2.Java语言基础

一.命名规则 1.Java标识符 Java所有的组成部分都需要名字.类名.变量名以及方法名都被称为标识符. 关于Java标识符,有以下几点需要注意: 所有的标识符都应该以字母(A-Z或者a-z),美元符($).或者下划线(_)开始 首字符之后可以是任何字符的组合 关键字不能用作标识符 标识符是大小写敏感的 合法标识符举例:age.$salary._value.__1_value 非法标识符举例:123abc.-salary 2.注意: 大小写敏感:Java是大小写敏感的,这就意味着标识符Hell

java学习笔记之java如何快速入门

什么是java? java是一种高级计算机语言,由SUN公司(现已经被Oracle公司收购)在1995年5月推出的一种可以编写跨平台的应用软件. SUN公司将java划分为三个技术平台 JavaSE--标准版,主要以开发普通桌面和商务应用程序.JavaSE是三个平台中的核心,它包括了java的核心类库,例如集合.IO.数据库连接以及网络编程等. JavaEE--企业版,为开发企业级应用程序提供解决方案.该平台用于开发.装配以及部署企业级应用程序,主要包括Servlet.Jsp.JavaBean.