java的输入输出流

tech2024-04-21  11

1.输入输出流

在Java中,把不同类型的输入输出源抽象为流,其中输入和输出的数据称为数据流(Data Stream)。数据流是Java程序发送和接收数据的一个通道,数据流中包括输入流(Input Stream)和输出流(Output Stream)。 通常应用程序中使用 输入流读出数据,输出流写入数据 。 流式输入、输出的特点是数据的获取和发送均沿数据序列顺序进行。相对于程序来说,输出流是往存储介质或数据通道写入数据,而输入流是从存储介质或数据通道中读取数据。

面向字节的流,数据的处理以字节为基本单位;字节流(Byte Stream)每次读写8位二进制数,也称为二进制字节流或位流。面向字符的流,用于字符数据的处理。字符流一次读写16位二进制数,并将其做一个字符而不是二进制位来处理。需要注意的是,为满足字符的国际化表示,Java语言的字符编码采用的是16位的Unicode码,而普通文本文件中采用的是8位ASCⅡ码。

2.字节流

字节流有两个抽象的父类,InputStram和outputStream,本文主要记录文件的操作,其他的具体实现类暂不讨论,主要看一下经常使用的几个字节流实现类的使用。 针对文件操作的字节流主要包括FileInputStream与FileOutputStream

写入文件

File inputFile = new File(fileLocalPath); FileOutputStream fileOutputStream = new FileOutputStream(inputFile); fileOutputStream.write(str.getBytes()); fileOutputStream.close();

写入文件比较简单,传入一个File类型的对象来构造FileOutputStream的对象,然后调用write方法即可,最后需要要调用close,释放资源

读取文件

FileInputStream fileInputStream = new FileInputStream(file); byte[] bytes = new byte[1024]; int i; while((i=fileInputStream.read(bytes))!=-1){ stringBuilder.append(new String(bytes,0,i)); } Log.i(TAG, stringBuilder.toString()); fileInputStream.close();

需要声明一个byte类型的数组,用于每次读取时将数据存入该数组,声明一个整型i用于保存一次读取到的字节数。最后再根据将字节数组转换成需要的类型,最后也需要调用close释放资源

3.字符流

字符流主要包括FileWriter和FileReader,字符缓冲流BufferedWriter,BufferedReader,用法与上述的字节流基本一致,调用read之后获取到的是字符类型,需要用char类型的数组去接收。

FileReader fileReader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader(fileReader); char[] chars = new char[1024]; int charInt; while ((charInt = bufferedReader.read(chars))!=-1){ Log.i(TAG,"char:"+new String(chars,0,charInt)); stringBuilder.append(new String(chars,0,charInt)); } Log.i(TAG,"stringResult : "+stringBuilder.toString()); fileReader.close(); bufferedReader.close();
最新回复(0)