Java文件与io——字节数组流数据流字符串流

字节数组流

ByteArrayInputStream:包含一个内部缓冲区,该缓冲区包含从流中读取的字节。内部计数器跟踪read方法要提供的下一个字节。关闭ByteArrayInputStream无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何IOException.

ByteArrayOutputStream:此类中实现了一个输出流。其中的数据被写入一个byte数组。缓冲区会随着数据的不断写入而自动增长。可使用toByteArray()和toString()获取数据。关闭ByteArrayOutputStream无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何IOException.

例:

public class ByteArrayStream {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        byteArrayStream();
    }
    public static void byteArrayStream(){
        ByteArrayInputStream bai=new ByteArrayInputStream("哈哈哈".getBytes());
        ByteArrayOutputStream bao=new ByteArrayOutputStream();
        int i=-1;
        while((i=bai.read())!=-1){
            bao.write(i);
        }
        System.out.println(bao.toString());
    }

}

数据流

DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本Java数据类型。应用程序可以使用数据输出流写入稍后由数据输入流读取的数据。DataInputStream对于多线程访问不一定是安全的。线程安全是可选的,它由此类方法的使用者负责。

DataOutputStream:数据输出流允许应用程序以适当方式将基本Java数据类型写入输出流中。然后,应用程序可以使用数据输入流将数据读入。

public class DataDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        DataOut();
        DataIn();
    }
    public static void DataOut(){
        try {
            OutputStream out=new FileOutputStream("G:\\bbb.txt");
            DataOutputStream dos=new DataOutputStream(out);
            dos.writeInt(6);//写入4字节
            dos.writeUTF("嘎嘎嘎嘎嘎");
            dos.writeLong(1512322);
            dos.close();
            out.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
    public static void DataIn(){
        try {
            InputStream in=new FileInputStream("G:\\bbb.txt");
            DataInputStream dis=new DataInputStream(in);
            int a=dis.readInt();
            String s=dis.readUTF();
            long b=dis.readLong();
            System.out.println(a);
            System.out.println(s);
            System.out.println(b);
            dis.close();
            in.close();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

字符串流

StringReader:其源为一个字符串的字符流。

StringWriter:一个字符流,可以用其回收在字符串缓冲区中的输出来构造字符串。关闭StringWriter无效。此类中的方法在关闭该流后仍可被调用,而不会产生任何IOException.

public static void main(String[] args) {
        // TODO Auto-generated method stub
        stringStream();
    }
    public static void stringStream(){
        String s="编程简单";
        StringReader sr=new StringReader(s);
        char[] c=new char[2];
        int len=-1;
        StringBuffer sb=new StringBuffer();
        try {
            while((len=sr.read(c))!=-1){
                sb.append(c,0,len);

            }
            System.out.println(sb);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
时间: 2024-10-14 19:29:11

Java文件与io——字节数组流数据流字符串流的相关文章

android byte字节数组转换十六进制字符串(物联网开发总结)

想起前段时间的物联网的外包开发,经常遇到通过wifi接受的数据,要通过转换成十六进制字符串,或者最后又是十进制数据.都是根据双方的协议来开发的.那么我发送过去的数据也需要,经过特殊转换成byte字节发过去,硬件那边收到不至于乱码的数据. 1.硬件调试发给android这边是十六进制数据 原始数据:68 38 38 68 A 72 78 55 34 12 43 23 01 07 Y 00 00 00 0C 13 78 56 34 12 0C 3B 78 34 12 0C 26 78 56 34 1

C#-----字节数组(byte[])和字符串相互转换

   Encoding类  表示字符编码 1.字符串转换成字节数组byte[] using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FileStreamTest { class Program { static void Main(string[] args) {

C#中字节数组(byte[])和字符串相互转换

转换过程主要使用到System.Text.Encoding命名空间下的类 1. 字符串转换成字节数组byte[]: string str = "This is test string"; byte[] byteArray = System.Text.Encoding.Default.GetBytes(str); 2.字节数组换成字符串: byte[] byteArray = 通过某种方式获取到的字节数组 string str = System.Text.Encoding.Default

将字节数组转换为十六进制字符串

/**     * 将字节数组转换为十六进制字符串     *      * @param byteArray     * @return     */    private static String byteToStr(byte[] byteArray) {        String strDigest = "";        for (int i = 0; i < byteArray.length; i++) {            strDigest += byte

C#字节数组转换成字符串

C#字节数组转换成字符串 如果还想从 System.String 类中找到方法进行字符串和字节数组之间的转换,恐怕你会失望了.为了进行这样的转换,我们不得不借助另一个类:System.Text.Encoding.该类提供了 bye[] GetBytes(string) 方法将字符串转换成字节数组,还提供了 string GetString(byte[]) 方法将C#字节数组转换成字符串. System.Text.Encoding 类似乎没有可用的构造函数,但我们可以找到几个默认的 Encodin

Java文件与io——复制文件和转换流

字节流与字符流的区别 在所有的流操作里,字节永远是最基础的.任何基于字节的操作都是正确的.无论是文本文件还是二进制的文件. 如果确认流里面只有可打印的字符,包括英文的和各种国家的文字,也包括中文,那么可以考虑字符流.由于编码不同,多字节的字符可能占用多个字节.比如GBK的汉字就占用2个字节,而UTF-8的汉字就占用3个字节.所以,字符流是根据指定的编码,将1个或多个字节转化为java里面的unicode的字符,然后进行操作.字符操作一般使用Writer,Reader等,字节操作一般都是Input

Java文件与io——打印流和对象流

打印流的主要功能是用于输出,在整个IO包中打印流分为两种类型: 字节打印流:PrintStream 字符打印流:PrintWriter 打印流可以很方便的进行输出 public class PrintStreamDemo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub byteStreamOut(); charStreamOut(); } //Pr

Java文件与io——缓冲流

对文件或其它目标频繁的读写操作,效率低,性能差. 使用缓冲流的好处,能够更高效的读写信息,原理是将数据先缓冲起来,然后一起写入或者读取出来. BufferedInputStream:为另一个输入流添加一些功能,在创建时,会创建一个内部缓冲区数组,用于缓冲数据 BufferedOutputStream:通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,而不必针对每次字节写入调用底层系统 BufferedReader:从字符输入流中读取文本,缓冲各个字符,从而实现字符.数组和行的高效读取

Java文件与io——字符流

Writer写入字符流的抽象类.对文件的操作使用:FileWriter类完成 Reader读取字符的抽象类. public class CharDemo { /** * @param args */ public static void main(String[] args) { // TODO 自动生成的方法存根 write(); read(); } //字符输出流 public static void write(){ File file=new File("c:\\b.txt")