黑马程序员---IO流

发布时间:2014-10-22 19:35:35编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"黑马程序员---IO流",主要涉及到黑马程序员---IO流方面的内容,对于黑马程序员---IO流感兴趣的同学可以参考一下。

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ---------------------- String StringBuffer  同步安全,效率比之StringBuilder低,可变字符序列 StringBuilder 不同步,效率高,可变字符序列。 String str=”1”+”2”+”3”+”4”; 会分别在字符串池中创建“12””123”  “1234”多出2个不需要的字符串。而StringBuilder与StringBuffer对象通过append(String)添加字符串只会在字符串中创建一个字符串。 IO流 流向分为:输出流(写入),输入流(读取)  流操作数据分为:字符流,字节流 字符流抽象基类:Reader Writer    字节流抽象基类:InputStream OutputStream 流对象一旦创建,必须close()流。关闭流后,流就不能进行任何操作了。好比男女朋友一样,一旦创建恋爱关系,当不爱时也得说一句分手,得告诉对方咱们不是男女朋友关系了,彼此自由了。但你我就不要再有任何联系了。 字节输入流中的available()判断读取文件的大小 flush():当输出流使用到缓冲区的时候需要在write()后flush() //字符输入流 FileReader fileReader=null; String str=""; BufferedReader bufr=null; try { fileReader=new FileReader("abc.txt"); bufr=new BufferedReader(fileReader); while((str=bufr.readLine())!=null){ System.out.println(str); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if (bufr!= null) { try { bufr.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //字符输出流 FileWriter fileWriter = null; BufferedWriter bufw = null; String str = ""; try { fileWriter = new FileWriter("abc.txt"); bufw= new BufferedWriter(fileWriter); bufw.write("234"); bufw.flush(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (bufw != null) { try { bufw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //复制文件1 private static void copyFile1() throws IOException { FileInputStream fileInputStream = new FileInputStream("123.mp4"); BufferedInputStream bufInputStream = new BufferedInputStream( fileInputStream); FileOutputStream fileOutputStream = new FileOutputStream("321.mp4"); BufferedOutputStream bufOutputStream = new BufferedOutputStream( fileOutputStream); //缓冲区中再次使用缓冲区 int len = 0; byte []by=new byte[1024]; while ((len = bufInputStream.read(by)) != -1) { bufOutputStream.write(by,0,len); bufOutputStream.flush(); } //不在自定义缓冲区了(经过简单测试此比有缓冲区慢) /*int ch=0; while ((ch=bufInputStream.read())!=-1) { bufOutputStream.write(ch); }*/ bufInputStream.close(); bufOutputStream.close(); } //复制文件2(自定义缓冲区) private static void copyFile2() throws IOException { FileInputStream fileInputStream=new FileInputStream("123.mp4"); FileOutputStream fileOutputStream=new FileOutputStream("321.mp4"); int len=0; byte[]by=new byte[1024]; while((len=fileInputStream.read(by))!=-1){ fileOutputStream.write(by, 0, len); fileOutputStream.flush(); } fileInputStream.close(); fileOutputStream.close(); } 缓冲:BufferedReader (子类 LineNumberReader跟踪行号的缓冲字符输入流) BufferedWriter  BufferedOutputStream BufferedInputStream  装饰设计模式 装饰设计模式 需对某对象的功能进行扩展,可以使用装饰设计模式而非使用继承。因为只对某功能进行扩展,使用继承的话,子类会多出没必要进行扩展的功能会使得整个类体系杂乱臃肿。装饰比继承灵活。装饰类和被装饰类都必须实现同一接口或所属同一父类。  默认的输入设备和输出设备的流不需要关,因为只有一个流。InputStream in=System.in;in.read();in.close(); 转换流:InputStreamReader 字节流转换为字符流 此过程称为解码                         OutputStreamWriter   字符流转换为字节流  此过程称为编码 //遍历目录 private static void fileList(File file) throws IOException { if (file.isDirectory()) { File[] strings = file.listFiles(); for (File string1 : strings) { if (string1.isDirectory()) { fileList(string1); } else { System.out.println(string1.getName()); } } } } //删除文件夹及文件 private static void fileList(File file) throws IOException { if (file.isDirectory()) { File[] strings = file.listFiles(); for (File string1 : strings) { /*if (string1.isDirectory()) { fileList(string1); } else { System.out.println(string1.getName()); }*/ if(string1.isDirectory()){ fileList(string1); }else{ string1.delete(); } } file.delete(); } } //将properties数据存储到文件中 Properties properties=new Properties(); properties.setProperty("123", "abc"); properties.setProperty("345", "efg"); properties.setProperty("567", "hjk"); OutputStream outputStream=new FileOutputStream("info.txt"); properties.store(outputStream, ""); outputStream.close(); //文件合并 ArrayList<FileInputStream> alArrayList=new ArrayList<FileInputStream>(); alArrayList.add(new FileInputStream("1.txt")); alArrayList.add(new FileInputStream("2.txt")); alArrayList.add(new FileInputStream("3.txt")); Enumeration<FileInputStream> en=Collections.enumeration(alArrayList); SequenceInputStream sequenceInputStream=new SequenceInputStream(en); FileOutputStream fileOutputStream=new FileOutputStream("4.txt"); byte []by=new byte[1024]; int len=0; while((len=sequenceInputStream.read(by))!=-1){ fileOutputStream.write(by,0,len); } sequenceInputStream.close(); fileOutputStream.close(); //文件切割 FileInputStream fileInputStream=new FileInputStream("38.mp4"); FileOutputStream fileOutputStream=null; int len=0; byte[]by=new byte[1024*1000];//1M int count=0; while((len=fileInputStream.read(by))!=-1){ count++; fileOutputStream=new FileOutputStream(count+".part"); fileOutputStream.write(by,0, len); } fileInputStream.close(); fileOutputStream.close(); //文件过滤及删除 File file = new File("E:\\Eclipse\\exam");//此处得是目录,否则异常 得先判断 if(file.isDirectory()){ File[] f = file.listFiles(new MyFileFilter());//此处可以使用内部类避免单独创建一个过滤类 for (File file2 : f) { System.out.println(file2.toString()); file2.delete(); }}//过滤器public class MyFileFilter implements FilenameFilter { @Override public boolean accept(File dir, String name) { // TODO Auto-generated method stub return name.endsWith(".part"); } } //对象流 ObjectOutputStream  ObjectInputStream ObjectOutputStream objOutputStream = new ObjectOutputStream( //写入 new FileOutputStream("123.txt")); objOutputStream.writeObject(new Person(12, "jeck")); objOutputStream.flush(); objOutputStream.close(); //读取 ObjectInputStream objectInputStream = new ObjectInputStream( new FileInputStream("123.txt")); Person person = (Person) objectInputStream.readObject(); System.out.println(person.getAge() + ":" + person.getName()); objectInputStream.close(); //编码 中文在GBK中2个字节,UTF—8中3个字节 String string="123中午";//编码 byte[]b=string.getBytes("GBK"); for (byte c : b) { System.out.println(c); }   ---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net


上一篇:LIB和DLL的区别与使用
下一篇:STL之iterator

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款