您的位置:首页 > 编程语言 > Java开发

java基础知识总结5

2016-03-29 10:15 429 查看

四、I/O流、File

File——–java.io.File——–文件和目录路径名的抽象表示形式

常用方法:

createNewFile(” “)———创建文件

delete(” “)

exists()———–测试是否存在

getName()———获得文件名

例:

String path = File.separator;//与系统有关的默认名称分隔符

File f = new File(“c:”+path+”c.txt”);

ystem.out.println(f.createNewFile());

例:import java.io.*;

public class FileDemo {

public static void main(String[] args) throws IOException{

/*

File f = new File(“c:\Users\Rainlate\Desktop\123.txt”);//注意\的转义字符

//构建实例不代表创建文件

boolean b =f.createNewFile();//创建文件

f.mkdirs();//创建前不必有父目录

//f.createTempFile(sd,jsp);//使用给定前缀和后缀生成其名称创建空文件

//f.createTempFile(23,txt, null);//使用给定前缀和后缀生成其名称

//boolean d1 = f.delete();//删除此抽象路径名表示的文件或目录。如果此路径名表示一个目录,则该目录必须为空才能删除

System.out.println(f.exists());//是否存在文件

System.out.println(f.getName());//123.txt

String path = File.separator;

File f = new File(“c:”+path+”c.txt”);

System.out.println(f.createNewFile());

String a = File.separator;

String path=”c:”+a+”Users”+a+”Rainlate”+a+”Desktop”+a+”1”;

File f = new File(path);

File[] files = new listFiles(f);

for(String file:files){

System.out.println(file);

}

*/

File x= new File(“c:\Users\Rainlate\Desktop\1”);

show(x);

}

public static void show(File f){//递归输出源目录下的所有文件

if(f.isDirectory()){//判断是否为目录

File[] files =f.listFiles();

for(int i=0;i

IO流:

第一,确定方向———–输入输出是以程序为中心

第二,确定是字节还是字符【若是字符型文本使用字符流,其他使用字节流】

第三,确定是否需要缓冲【autoFlush、Flush】———-缓冲流是用空间换时间

第四,所有操作必须关闭【在finally关闭】

例1;

import java.io.*;

public class FileInputStreamDemo{//文本复制

public static void main(String[] args) {

String a = File.separator;//与系统有关的默认名称分隔符

FileInputStream fin = null;

//FileOutputStream fo = null;

BufferedOutputStream fo = null;

try{

fin = new FileInputStream(“C:”+a+”Users”+a+”Rainlate”+a+”Desktop”+a+”123.docx”);

byte[] b = new byte[512];//存储读取数据的缓冲区

long start = System.currentTimeMillis();

int size = fin.read(b,0,b.length);

//fo = new FileOutputStream(“C:”+a+”Users”+a+”Rainlate”+a+”Desktop”+a+”12.java”);

fo = new BufferedOutputStream (new FileOutputStream(“C:”+a+”Users”+a+”Rainlate”+a+”Desktop”+a+”12.docx”));

while(size != -1){

fo.write(b,0,size);//文件的实际大小

fo.flush();

size = fin.read(b,0,b.length);

}

long late = System.currentTimeMillis();

System.out.println(late-start);

}catch (FileNotFoundException e){

System.out.println(e.getMessage());

}catch(IOException e){

System.out.println(e.getMessage());

}finally{

try{

fin.close();//关闭输入流

fo.close();//关闭输出流

}catch (IOException e){

System.exit(1);//异常退出

}

}

}

}

例2:

import java.io.*;

public class ObjectSerializable {

public static void main(String[] args) {

Person p = new Person(32,”huhu”);

String a = File.separator;

ObjectOutputStream ou =null;//序列化

ObjectInputStream oin = null;//反序列化

try{

ou = new ObjectOutputStream(new FileOutputStream(“C:”+a+”Users”+a+”Rainlate”+a+”Desktop”+a+”1.txt”));

ou.writeObject(p);//对象序列化

ou.flush();

//反序列化

oin = new ObjectInputStream(new FileInputStream(“C:”+a+”Users”+a+”Rainlate”+a+”Desktop”+a+”1.txt”));

Object obj = oin.readObject();

Person as = (Person)obj;

System.out.println(as);

out.flush();

}catch (FileNotFoundException e){

System.out.println(e.getMessage());

}catch(IOException e){

System.out.println(e.getMessage());

}catch(ClassNotFoundException e){

System.out.println(e.getMessage());

}finally{

try{

out.close();

}catch (IOException e){

System.exit(1);

}

}

}

}

class Person implements Serializable {

private int age;

private String name;

public Person(int age,String name){

this.age=age;

this.name=name;

}

public String toString(){

return “name=”+this.name+”,age=”+this.age;

}

}

序列化的版本号(serialVersionUID=1L)?

作用:就是确保了不同版本之间的兼容性,不仅能够向前兼容,还能够向后兼容,即在版本升级时反序列化仍保持对象的唯一性。

它有两种生成方式:

一个是默认的1L,比如:private static final long serialVersionUID = 1L;

一个是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,比如: private static final long serialVersionUID = xxxxL

类图结构

┌BufferedReader

├InputStream──FileReader

├StringReader

┌Reader─┤

│ ├PipedReader

│ ├ByteArrayReader

│ └FileReader──PushbackReader

字符流─┤

│ ┌BufferedWriter

│ ├OutputStreamWriter──FileWriter

│ ├PrinterWriter

└Writer─┼StringWriter

├PipedWriter

├CharArrayWriter

└FileWriter

┌FileInputStream

│ ┌BufferedInputStream

├FilterInputStream ──┼DataInputStream

│ └PushbackInputStream

┌InputStream ─┼ObjectInputStream

│ ├PipedInputStream

│ ├SequenceInputStream

│ ├StringBufferInputStream

│ └ByteArrayInoutStream

字节流─┤



│ ┌FileOutputStream

│ │ ┌BufferedOutputStream

│ ├FilterOutputStream ──┼DataOutputStream

└OutputStream ─┤ └PrintStream

├ObjectOutputStream

├PipedOutputStream
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: