java-----I/O流
来源:互联网 发布:经典数据新闻案例分析 编辑:程序博客网 时间:2024/06/05 04:18
按照不同分类,大致可以分为输入流,输出流;字节流,字符流;包装流,基本流。
其中输入流大致可以看做InputStream,基本方法为read(),read(byte []),read(byte [],int off ,int len).
需要特别注意:read()返回下一个数据字节;如果到达流的末尾,则返回 -1。
read(byte [])返回读入缓冲区的总字节数;如果因为已经到达流末尾而不再有数据可用,则返回 -1。
read(byte [],int ,int)返回读入缓冲区的总字节数;如果因为已到达流末尾而不再有数据可用,则返回 -1。
off - 数组 b 中将写入数据的初始偏移量。len - 要读取的最大字节数。
输出流大致可以看做OutputStream ,基本方法为write(int b), write(byte [] b) , write(byte []b,int off ,int len).注意当使用输出流时最好flash,以免数据未输出成功。
字节流:以字节为单位进行输入输出,有FileInputStream(用于传输文件);ObjectInputStrea(用于序列化或反序列化对象),;PipedInputStream(管道流,多用于线程中,并相互连接);ByteArrayInputStream(使用字节数组传输)DataInputStream(使用基本数据类型传输);BufferedInputStream(缓冲流,缓冲区默认为4K)。输出流与之类似。
字节流每次传输只传输低八位,其中DataInputStream的底层实现为下:
对象序列化时可以加transient关键字来使属性透明化,不序列化该属性。
out.write((v >>> 24) & 0xFF); //分4次传输32位,每次8位 out.write((v >>> 16) & 0xFF); out.write((v >>> 8) & 0xFF); out.write((v >>> 0) & 0xFF);
字符流:以字符为单位进行传输,有PIpedReader(管道流);BufferedReader(缓冲流,可以逐行读取);CharArrayStream(字节数组流);StringReader(字符串流);FileReader(文件流)。InputStreamReader(是一种转化流,可以将字节流转化为字符流传输);PreintWriter(可以整行输入)
另外有RandomAcessFile可以来输入输出。父类为Object,不属于输入输出流,也不是字节字符流。
但是可以直接输入输出,可字节,可字符。
// txt默认UTF-8读取 //而randomacessfile则是iso-8859-1 //控制台则是虚拟机设置的编码,默认是GBK,但已改为UTF-8 // 所以乱码 RandomAccessFile in =new RandomAccessFile("src/笔记.txt", "r"); String str =null; while((str=in.readLine())!=null){ //getBytes转化时会默认使用UTF-8编码,把读取的字符转化为UTF-8的数组字节 //必须要使用ISO-8859-1编码,把读取的ISO-8859-1字符转化为原始的字节数据 //然后在将原始的字节数据转化为UTF-8。这样才能正确输出本来UTF-8的字符。 String str_utf =new String(str.getBytes("ISO-8859-1"),"UTF-8"); System.out.println(str_utf); } in.close();
另有一种特殊文件格式为properties。可以直接读取到map中。文件内格式为key=value形式。
` Properties p=new Properties();
p.put(2, 4);
p.load(new FileInputStream(“src/abc.properties”));
Set keys=p.keySet(); for(Object o:keys){ System.out.println(o+":"+p.get(o)); }`
- java I/O流
- java I/O流
- java I/O流
- Java I/O流
- JAVA--I/O流
- java I/O流
- java I/O流
- java I/O流
- Java I O流
- java i/o流
- Java I/O流
- Java I/O流
- java I/O流
- java I/O流
- Java - I/O流
- java-I/O流
- JAVA I/O流
- JAVA I/O流
- django-pure-pagination的使用
- JZOJ4876. 【NOIP2016提高A组集训第10场11.8】基因突变(2017.8B组)
- struts-struts标签的使用(一)
- 51Nod-1019-逆序数
- Party at Hali-Bula(UVA
- java-----I/O流
- PHP框架
- Code,RO-data,RW-data,ZI-data
- 5296. 【清华集训2017模拟】Sequence 树套树
- windows和linux双系统安装
- 一些简单在开发中用到的封装函数
- 91. Decode Ways
- 怎么把种子文件里面的电影保存到网盘里面?
- 在Linux上,对于多进程,子进程继承了父进程的哪些