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));
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java 学习(24)---(IO流之字符流)
字符流 字节流操作中文数据不是特别的方便,所以就出现了转换流。转换流的作用就是把字节流转换字符流来使用。 转换流其实是一个字符流 字符流 =字节流 +编码表 编码表 A:就是由字符和对应的数值组成的一张表 B:常见的编码表 ASCII ISO-8859-1 GB2312 GBK GB18030 UTF-8 C:字符串中的编码问题编码 String -- byte[] 解码 byte[] -- String IO 流中的编码问题 A:OutputStreamWriter OutputStreamWriter(OutputStreamos): 默 认 编 码 , GBK OutputStreamWriter(OutputStreamos,StringcharsetName): 指定编码。 B:InputStreamReader InputStreamReader(InputStream is): 默 认 编 码 , GBK InputStreamReader(InputStreamis,StringcharsetName): 指定编码 C:编码问题其实很简单编码只要一致即可 字符流 Rea...
- 下一篇
Java 学习(26)---(IO流之Properties 类 / 合并流 / 序列化流 / 随机访问流)
Properties (1)是一个集合类, Hashtable的子类 (2)特有功能 A:public Object setProperty(Stringkey,Stringvalue) ; //添加元素 B:public StringgetProperty(Stringkey) ; //根据键获取元素 C:publicSet<String> stringPropertyNames() ; //获取所有的键的集合 (3)和 IO 流结合的方法 把键值对形式的文本文件内容加载到集合中 public void load(Reader reader) public void load(InputStream inStream) 把集合中的数据存储到文本文件中 public void store(Writer writer,String comments) public void store(OutputStream out,String comments) (4)案例: A:根据给定的文件判断是否有键为 "lisi"的,如果有就修改其值为 100 // 把文件中的数据加载到集合中...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Mario游戏-低调大师作品
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7