Java 学习(25)---(IO流之数据流 / 内存操作流 / 打印流 / 标准输入输出流)

数据流

可以读写基本数据类型的数据

数据输入流: DataInputStream

DataInputStream(InputStream in)

数据输出流: DataOutputStream

DataOutputStream(OutputStream out)

privatestaticvoid	read()	throws	IOException {
// DataInputStream(InputStream in)
//	创建数据输入流对象
DataInputStream dis =	newDataInputStream( new FileInputStream("dos.txt"));
//	读数据
byte	b = dis.readByte(); short s = dis.readShort(); int i = dis.readInt();
long	l = dis.readLong(); float	f = dis.readFloat();
double	d = dis.readDouble();
char	c = dis.readChar();
boolean	bb = dis.readBoolean();
//	释放资源
dis.close();
}
privatestaticvoid	write()	throws IOException {
// DataOutputStream(OutputStream out)
//	创建数据输出流对象
DataOutputStream dos = new DataOutputStream(new FileOutputStream( "dos.txt"	));

//	写数据了
dos.writeByte(10);

dos.writeShort(100); dos.writeInt(1000); dos.writeLong(10000); dos.writeFloat(12.34F); dos.writeDouble(12.56); dos.writeChar('a'); dos.writeBoolean(true);
//	释放资源
dos.close();
}

内存操作流

用于处理临时存储信息的,程序结束,数据就从内存中消失。

字节数组:ByteArrayInputStream    ByteArrayOutputStream

字符数组:CharArrayReader      CharArrayWriter

字符串:StringReader      StringWriter

// ByteArrayOutputStream()
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//	写数据
for	(  int	x = 0; x < 10; x++) {
baos.write(("hello"	+x ).getBytes());
}
//	释放资源
//	通过查看源码我们知道这里什么都没做,所以根本不需要	close()
// baos.close();

// public byte[] toByteArray()
byte  []bys = baos.toByteArray();

//	读数据
// ByteArrayInputStream(byte[] buf)
ByteArrayInputStream bais = new ByteArrayInputStream(bys);
int	by = 0;
while((by = bais.read()) != -1) {
System.	out .print((char)	by );
}
// bais.close();

 打印流

(1)字节打印流,字符打印流

(2)特点:

A:只操作目的地 ,不操作数据源

B:可以操作任意类型的数据

C:如果启用了自动刷新,在调用  println()  方法的时候,能够换行并刷新

D:可以直接操作文件

问题:哪些流可以直接操作文件呢 ?

看 API,如果其构造方法能够同时接收 File 和 String 类型的参数,一般都是可以直接操作文件的

(3)案例:复制文本文件

BufferedReader br  = new BufferedReader(new FileReader("a.txt"));

PrintWriter pw = new PrintWriter(new FileWriter("b.txt"),true);

String line = null ;

while ((line=br.readLine())!=null ) {

pw.println(line );

}

pw.close();

br.close();

标准输入输出流 ( 理解即可 )

System 类下面有这样的两个字段:in 标准输入流 / out 标准输出流

(2)三种键盘录入方式

A:main 方法的 args 接收参数

B:System.in 通过 BufferedReader 进行包装

    BufferedReader br = new BufferedReader(new

    InputStreamReader(System.in));

C:Scanner

Scanner sc = new Scanner(System.in);

(3)输出语句的原理和如何使用字符流输出数据

A:原理    System.out.println("helloworld"); PrintStream ps = System.out; ps.println("helloworld");

B:把 System.out 用字符缓冲流包装一下使用

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

​​​​​​

上一篇:EM 算法求解高斯混合模型python实现


下一篇:一些开源搜索引擎实现——倒排使用原始文件,列存储Hbase,KV store如levelDB、mongoDB、redis,以及SQL的,如sqlite或者xxSQL