DataStream和FileStream用法
来源:互联网 发布:淘宝上买气排有记录吗 编辑:程序博客网 时间:2024/06/05 16:45
1、DataInputStream和DataOutputStream都是Java中输入输出流的装饰类,用起来很方便。
package another;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;public class TestDataStream { public static void main(String[] args) throws Exception { //新建 FileOutputStream fos=new FileOutputStream("E://dahjkdhajkdata.txt"); //读出 BufferedOutputStream bos=new BufferedOutputStream(fos); //输出流 DataOutputStream dos=new DataOutputStream(bos); // FileInputStream fis=new FileInputStream("E://dahjkdhajkdata.txt"); BufferedInputStream bis=new BufferedInputStream(fis); DataInputStream dis=new DataInputStream(bis); String str="你好hi"; dos.writeUTF(str); //按UTF-8格式写入 dos.writeChars(str); //按字符写入 //按字节写入有两种方法,第一种方法只能适应无汉字的情况; //因为方法1在写入时会把所有的字符都按1个字节写入,而汉字的表示需要2个字节, //这就造成了数据的丢失,读入时就会出现乱码。 //而方法2在将字符串转换为字节数组时就把汉字字符变为了2个字节, //写入文件的时候也会按2个字节的文字写入,这样读取的时候就不会出现问题 dos.writeBytes(str);//方法1:将整个字符串按字节写入 byte[] b=str.getBytes(); dos.write(b); //方法2:将字符串转换为字节数组后再逐一写入 dos.close(); //按UTF-8格式读取 System.out.println(dis.readUTF()); //字符读取 char [] c=new char[4]; for(int i=0;i<4;i++){ c[i]=dis.readChar(); //读取4个字符 } System.out.print(new String(c,0,4)); System.out.println(); //字节读取 byte [] b1=new byte[4]; dis.read(b1); //读取4个字节 System.out.print(new String(b1,0,4));//输出时会出现乱码 System.out.println(); byte [] b2=new byte[1024]; int len=dis.read(b2); //按字节读取剩余的内容 System.out.println(new String(b2,0,len));}}
使用该类时候遇到的编码问题。可参考:http://blog.csdn.net/fishwjy/article/details/38092985
2、FileInputStream和FileOutputStream这是一对继承于InputStream和OutputStream的类,用于本地文件读写(二进制格式读写
并且是顺序读写,读和写要分别创建出不同的文件流对象)
package another;/*import java.io.*;//这是一对继承于InputStream和OutputStream的类,用于本地文件读写(二进制格式读写//并且是顺序读写,读和写要分别创建出不同的文件流对象)//I/O类包括节点流类和包装流类//FileOutputStream实例对象时,如果指定的文件已经存在,//这个文件中的原来内容将被清除//创建FileOutputStream实例对象时,可以指定还不存在的文件名//不能指定一个已被其他程序打开的文件public class TestFileStream {public static void main(String[] args) throws IOException{File inFile = new File("E://从前慢.mp3");File outFile = new File("E://新从前慢.mp3");FileInputStream inStream = new FileInputStream(inFile);FileOutputStream outStream = new FileOutputStream(outFile);byte [] inOut = new byte[inStream.available()];//通过available方法取得流的最大字符数inStream.read(inOut);//读入流,并保存在byte数组里,并且已经读入byte[]数组的内容,会在流文件中删除outStream.write(inOut);//写出流,产生一个新文件inStream.close();outStream.close();}}//但是如果文件过大,即超过64M则需要分开几个流操作//需要两个线程读写数据时,线程并发执行,读写的同步问题可能会发生困难//可使用管道,操作系统里管道就是一个队列//可参考http://blog.sina.com.cn/s/blog_77eac33f0101as49.html//DataInput/DataOutput接口:实现与机器无关的各种数据格式读写//(如readChar() 、readInt()、readLong()、readFloat(),而readLine()//将返回一个String)。其中RandomAccessFile类实现了该接口,//具有比FileInputStream或FileOutputStream类更灵活的数据读写方式。*/import java.io.*; public class TestFileStream { public static void main(String [] args) { try { FileOutputStream out = new FileOutputStream("E://hello.txt"); out.write("checheya".getBytes()); out.close(); File file = new File("E://hello.txt"); FileInputStream in = new FileInputStream(file); byte[] buf = new byte[20]; int len = in.read(buf); System.out.println(buf);//乱 System.out.println(new String(buf, 0, len)); in.close(); } catch (Exception e) { e.printStackTrace(); } } }
阅读全文
0 0
- DataStream和FileStream用法
- c# FileStream和StreamWriter用法
- C# FileStream和StreamWriter用法
- c# FileStream和StreamWriter用法
- C# FileStream和StreamWriter用法
- filestream 用法
- DataStream
- DataStream
- StreamReader和StreamWrite和FileStream区别和用法
- StreamReader和StreamWrite和FileStream区别和用法
- FileStream和StreamReader,StreamWrite,BinaryWriter和BinaryReader的用法
- Flink学习:DataStream和InputFormat
- FileStream 的用法
- 使用MemoryStream和FileStream
- 使用MemoryStream和FileStream
- FileStream和StreamWriter区别
- FileStream 和 StreamWriter/StreamReader
- c#filestream与streamwriter用法
- bat 批处理之字符串操作
- Spring @Transication标签
- 蓝桥杯 ADV-213 算法提高 3-2求存款
- 834: [ZJOI2010]network 网络扩容
- Python获取本机所有IP地址
- DataStream和FileStream用法
- adb操作命令详解及大全
- 蓝桥杯 ADV-212 算法提高 3-1课后习题2
- 超时与重试机制(2)—《亿级流量》
- 最小路径覆盖
- java笔记(八):反射
- 【技术贴】解决YOGA710触摸板无法双指单击右键的问题
- 链表的Java实现
- [经典]技术面试宝典: 很全面的算法和数据结构知识(含代码)