手记

Java:数据的输出流与输入流

Java:数据的输出流与输入流
  • 字节输入流:InputStream
  • 字节输出流:OutputStream

字节输出流在我另一个博客里有介绍:http://blog.csdn.net/baidu_34750904/article/details/53572111


字节输入流(InputStream)

  • 向数组里面读取数据:
package cn.dujiang.demo;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
/**
 * 将部分字节数组变为字符串
 * @author Dujiang
 *
 */
public class TestDemo {
    public static void main(String[] args) throws Exception {// 此处直接抛出
        // 1、定义输出的文件的路径
        File file = new File("F:" + File.separator + "demo" + File.separator + "demo.text");
        // 2、需要判断文件是否存在后才可以进行读取
        if (file.exists()) { // 文件存在
            // 3、使用InputStream进行读取
            InputStream input = new FileInputStream(file);
            // 4、进行数据读取
            byte data[] = new byte[1024]; // 准备一个1024的数组
            int len = input.read(data); // 将内容保存到字节数组之中
            // 5、关闭数据流
            input.close();
            System.out.println("【" + new String(data,0,len) + "】");

        }
    }
}
  • (实现1、利用do..while循环)单个字节数据读取
package cn.dujiang.demo;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

/**
 * 单个字节数据读取 |-由于一个文件有很多的字节数据,所以如果要读取肯定采用循环的方式完成,由于不确定循环次数,所以应该使用while循环
 * 完成,但是下面为了更好的把问题表现出来,所以使用do..while与while两种方式实现。
 * 
 * @author Dujiang
 *
 */
public class TestDemo {
    public static void main(String[] args) throws Exception {// 此处直接抛出
        // 1、定义输出的文件的路径
        File file = new File("F:" + File.separator + "demo" + File.separator + "demo.text");
        // 2、需要判断文件是否存在后才可以进行读取
        if (file.exists()) { // 文件存在
            // 3、使用InputStream进行读取
            InputStream input = new FileInputStream(file);
            // 4、进行数据读取
            byte data[] = new byte[1024]; // 准备一个1024的数组
            int foot = 0; // 表示字节数组的操作角标
            int temp = 0; // 接收每次读取的字节数据
            do {
                temp = input.read();// 读取一个字节
                if (temp != -1) {// 现在是真实的内容
                    data[foot++] = (byte) temp; // 保存读取的字节到数组之中 ,注意要进行向下转型
                }
            } while (temp != -1);// 如果现在读取的temp的字节数据不是-1,表示还有内容

            // 5、关闭数据流
            input.close();
            System.out.println("【" + new String(data, 0, foot) + "】");

        }
    }
}
  • (实现2、利用while循环)单个字节数据读取
package cn.dujiang.demo;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

/**
 * 单个字节数据读取 |-由于一个文件有很多的字节数据,所以如果要读取肯定采用循环的方式完成,由于不确定循环次数,所以应该使用while循环
 * 完成,但是下面为了更好的把问题表现出来,所以使用do..while与while两种方式实现。
 * 
 * @author Dujiang
 *
 */
public class TestDemo {
    public static void main(String[] args) throws Exception {// 此处直接抛出
        // 1、定义输出的文件的路径
        File file = new File("F:" + File.separator + "demo" + File.separator + "demo.text");
        // 2、需要判断文件是否存在后才可以进行读取
        if (file.exists()) { // 文件存在
            // 3、使用InputStream进行读取
            InputStream input = new FileInputStream(file);
            // 4、进行数据读取
            byte data[] = new byte[1024]; // 准备一个1024的数组
            int foot = 0; // 表示字节数组的操作角标
            int temp = 0; // 接收每次读取的字节数据
            while((temp = input.read())!= -1){
                data[foot ++] = (byte) temp ;
            }
            // 5、关闭数据流
            input.close();
            System.out.println("【" + new String(data, 0, foot) + "】");

        }
    }
}
14人推荐
随时随地看视频
慕课网APP

热门评论

单个字节输入输出效率是不是很低啊


查看全部评论