java字节流

/*
字节流
InputStream
OutputStream 

字节流缓冲区
BufferedInputStream
BufferedOutputStream

System.out:对应的是标准输出设备,控制台
System.in:对应的标准输入设备,键盘

InputStreamReader:字符流转换为字节流,字节流及其缓冲没有readLine方法,先变为字符流缓冲区
*/

package pack;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Main {

    public static void sys(Object obj) {
        System.out.println(obj);
    }

    public static void main(String[] args) throws IOException {
        //method1();
        //method2();
        //method3();
        //method4();
        method5();
    }

    public static void method1() throws IOException {
        FileOutputStream fos = new FileOutputStream("E:\\1.txt");
        fos.write("abc".getBytes());//write方法里没有字符串参数,转换为字节数组
        //字节流不需要刷新
        fos.close();
    }

    public static void method2() throws IOException {
        FileInputStream fis = new FileInputStream("E:\\1.txt");
        /*int ch = 0;
        while((ch=fis.read())!=-1) //一次读一个
            sys((char)ch);
        fis.close();*/

        byte[] buf = new byte[fis.available()];//fis.available是个数
        int len = 0;
        while((len=fis.read(buf))!=-1)
            sys(new String(buf,0,len));
        fis.close();
    }

    /*拷贝图片,字节流*/
    public static void method3() throws IOException {
        FileOutputStream fos = new FileOutputStream("E:\\2.jpg");
        FileInputStream fis = new FileInputStream("E:\\1.jpg");
        int ch = 0;
        while((ch=fis.read())!=-1)
            fos.write(ch);
        fos.close();
        fis.close();
    }

    /*拷贝mp3,通过缓冲区*/
    public static void method4() throws IOException {
        BufferedOutputStream bufos=new BufferedOutputStream(new FileOutputStream("E:\\2.mp3"));
        BufferedInputStream bufis=new BufferedInputStream(new FileInputStream("E:\\1.mp3"));
        int ch = 0;
        while((ch=bufis.read())!=-1)
            bufos.write(ch);
        bufis.close();
        bufos.close();
    }

    public static void method5() throws IOException {
        //字节流及其缓冲没有readLine方法,先变为字符流缓冲区
        InputStream in = System.in; //获取键盘输入对象
        InputStreamReader isr = new InputStreamReader(in);//字节流转换为字符流
        BufferedReader bufr = new BufferedReader(isr); //字符流缓冲区
        String line = null;
        while((line=bufr.readLine())!=null) {
            if(line.equals("over"))
                break;
            sys(line);
        }

        bufr.close();
    }
}
时间: 2024-10-18 11:14:43

java字节流的相关文章

Java字节流操作

在java.io包中得操作主要有字节流与字符流两大类,两个类都有输入输出操作. 在字节流中,输出数据主要使用OutputStream类,输入使用的InputStream类. 在字符流中,输出数据使用Writer,输入数据使用Reader. 在Java中IO操作有相应的步骤,以文件的操作为例. (1)使用File类打开一个文件 (2)通过字节流或字符流的子类指定输出的位置. (3)进行读/写操作 (4)关闭输入/输出 字符流与字节流的区别: 字节流在操作时本身不会用到缓冲区(内存),是文件本身直接

java 字节流和字符流转换类InputStreamReader,OutPutStreamReader

import java.io.*; public class BufferDemo { public static void main(String[] args) throws IOException { BufferedReader buf=null; buf=new BufferedReader(new InputStreamReader(System.in)); System.out.print("Please enter a number:"); String str=buf

OpenJDK 源码阅读之 Java 字节流输入类的实现

Java 的输入输出总是给人一种很混乱的感觉,要想把这个问题搞清楚,必须对各种与输入输出相关的类之间的关系有所了解.只有你了解了他们之间的关系,知道设计这个类的目的是什么,才能更从容的使用他们. 我们先对 Java I/O 的总体结构进行一个总结,再通过分析源代码,给出把每个类的关键功能是如何实现的. Java I/O 的主要结构 Java 的输入输出,主要分为以下几个部分: 字节流 字符流 Socket 新 I/O 每个部分,都包含了输入和输出两部分. 实现概要 这里只给出每个类的实现概要,具

OpenJDK 源码阅读之 Java 字节流输出类的实现

Java 的输入输出总是给人一种很混乱的感觉,要想把这个问题搞清楚,必须对各种与输入输出相关的类之间的关系有所了解.只有你了解了他们之间的关系,知道设计这个类的目的是什么,才能更从容的使用他们. 这是这个系列的第二篇,描述字节输出类的实现,第一篇见:OpenJDK 源码阅读之 Java 字节流输入类的实现 字节流输出 图1 Java 字节输出类 OutputStream OutputStream是所有字节输出类的超类,这是个抽象类,需要实现其中定义的 write 函数,才能有实用的功能. pub

黑马程序员——关于java字节流的read()方法返回值为int的思考(转载)

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! -------  之前一直不明白java字节流的read()方法返回值为什么为int,今天在网上找到了答案.以下为转载,原文地址:http://blog.sina.com.cn/s/blog_9e351f9b01015kgp.html 我们都知道java中io操作分为字节流和字符流,对于字节流,顾名思义是按字节的方式读取数据,所以我们常用字节流来读取二进制流(如图片,音乐 等文件).问题是为什么字节流中定义的

JAVA字节流(读写文件)

InputStream此抽象类是表示字节输入流的所有类的超类.需要定义 InputStream 的子类的应用程序必须始终提供返回下一个输入字节的方法. int available()返回此输入流方法的下一个调用方可以不受阻塞地从此输入流读取(或跳过)的字节数.void close()关闭此输入流并释放与该流关联的所有系统资源.void mark(int readlimit)在此输入流中标记当前的位置.boolean markSupported()测试此输入流是否支持 mark 和 reset 方

java 字节流和字符流的区别 转载

转载自:http://blog.csdn.net/cynhafa/article/details/6882061 java 字节流和字符流的区别 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如图12-6所示. 下面以两个写文件的操作为主进行比较,但是在操作时字节流和字符流的操作完成之后都不关闭输出流.范例:使用字节流不关闭执行 Java

Java字节流实现文件夹的拷贝

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; /** · java字节流实现文件夹的拷贝 · 拷贝文件夹,其中文件夹中又有多个文件 · 1.先遍历这个文件夹,判断是否是目录 · 2.创建文件夹 · 3.拷

java 字节流与字符流的区别

字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如图12-6所示.下面以两个写文件的操作为主进行比较,但是在操作时字节流和字符流的操作完成之后都不关闭输出流. 范例:使用字节流不关闭执行 package org.lxh.demo12.byteiodemo; import java.io.File; import java.io.FileO