java IO流
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java IO流,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4146字,纯文字阅读大概需要6分钟。
内容图文
1 package com.sun.io; 2 3 import java.io.BufferedOutputStream; 4 import java.io.File; 5 import java.io.FileInputStream; 6 import java.io.FileOutputStream; 7 import java.io.IOException; 8 import java.io.InputStream; 9 import java.io.ObjectInputStream; 10 import java.io.ObjectOutputStream; 11 import java.io.SequenceInputStream; 12 import java.io.Serializable; 13 import java.util.Enumeration; 14 import java.util.Vector; 15 16 import org.junit.Test; 17 18 public class IODemo { 19 @Test 20 public void createFile() throws IOException { 21// File f = new File("D:/eadp1.txt"); 和下面的效果相同 22 File f = new File("D:\\eadp1.txt"); 23// 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。API 24// 该目录下没有此文件则创建,创建成功返回true,如果存在返回false;如果目录是不存在的话那会抛出IO异常 25 System.out.println(f.createNewFile()); 26 System.out.println("该分区大小" + f.getTotalSpace() / (1024 * 1024 * 1024) + "G"); // 返回由此抽象路径名表示的文件或目录的名称。 27 f.mkdirs(); // 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。 28// f.delete(); // 删除此抽象路径名表示的文件或目录 29 System.out.println("文件名 " + f.getName()); // 返回由此抽象路径名表示的文件或目录的名称。 30 System.out.println("文件父目录字符串 " + f.getParent());// 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 31 } 32 33 @Test 34publicvoid fileInputStream() throws IOException { 35int count = 0; 36 InputStream streamReader = new FileInputStream(new File("D:\\eadp1.txt")); 37byte[] b = newbyte[(int) new File("D:\\eadp1.txt").length()]; 38 System.out.println("---长度是: " + b.length + " 字节"); 39while (streamReader.read() != -1) { // 读取文件字节,并递增指针到下一个字节 40 count++; 41 } 42 System.out.println("---长度是: " + count + " 字节"); 43 streamReader.close(); 44 } 45 46 @Test 47publicvoid copyFile() throws IOException { 48// TODO自动生成的方法存根 49byte[] buffer = newbyte[512]; // 一次取出的字节数大小,缓冲区大小 50int numberRead = 0; 51 FileInputStream input = null; 52 FileOutputStream out = null; 53 input = new FileInputStream("D:\\eadp1.txt"); 54 out = new FileOutputStream("D:\\eadp.txt"); // 如果文件不存在会自动创建 55 56while ((numberRead = input.read(buffer)) != -1) { // numberRead的目的在于防止最后一次读取的字节小于buffer长度, 57 out.write(buffer, 0, numberRead); // 否则会自动被填充0 58 } 59 System.out.println("成功"); 60 input.close(); 61 out.close(); 62 } 63 64/** 65 * 可以看我另一篇博客java序列化 把数据存到数据库中 66 * 67 * @throws IOException 68 * @throws ClassNotFoundException 69*/ 70 @Test 71publicvoid copyObject() throws IOException, ClassNotFoundException { 72 73 ObjectOutputStream objectwriter = new ObjectOutputStream(new FileOutputStream("D:\\student.txt")); 74 objectwriter.writeObject(new Student("gg", 22)); 75 objectwriter.writeObject(new Student("tt", 18)); 76 objectwriter.writeObject(new Student("rr", 17)); 77 ObjectInputStream objectreader = new ObjectInputStream(new FileInputStream("D:\\student.txt")); 78for (int i = 0; i < 3; i++) { 79 System.out.println(objectreader.readObject()); 80 } 81 objectreader.close(); 82 objectwriter.close(); 83 } 84 85/** 86 * 合并流 87 * 88 * @throws IOException 89*/ 90 @Test 91privatevoid doSequence() throws IOException { 92// 创建一个合并流的对象 93 SequenceInputStream sis = null; 94// 创建输出流。 95 BufferedOutputStream bos = null; 96// 构建流集合。 97 Vector<InputStream> vector = new Vector<InputStream>(); 98 vector.addElement(new FileInputStream("D:\text1.txt")); 99 vector.addElement(new FileInputStream("D:\text2.txt")); 100 vector.addElement(new FileInputStream("D:\text3.txt")); 101 Enumeration<InputStream> e = vector.elements(); 102 sis = new SequenceInputStream(e); 103 bos = new BufferedOutputStream(new FileOutputStream("D:\text4.txt")); 104// 读写数据105byte[] buf = newbyte[1024]; 106int len = 0; 107while ((len = sis.read(buf)) != -1) { 108 bos.write(buf, 0, len); 109 bos.flush(); 110 } 111 } 112} 113114class Student implements Serializable { 115privatestaticfinallong serialVersionUID = 1L; 116private String name; 117privateint age; 118119public Student(String name, int age) { 120super(); 121this.name = name; 122this.age = age; 123 } 124125 @Override 126public String toString() { 127return "Student [name=" + name + ", age=" + age + "]"; 128 } 129 }
这里有个问题,对象的序列化是方便了我们去操作多个类(对象存在字段中),但是如果是数据迁移的话这些二进制数据就完全失去了作用,那是否考虑存为json
呢,其实这种方法也不好,解析json也是个复杂的过程,最好的方式还是对象!当然这也因需求而异
原文:http://www.cnblogs.com/sun-space/p/5665238.html
内容总结
以上是互联网集市为您收集整理的java IO流全部内容,希望文章能够帮你解决java IO流所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。