知识大全 Java语言深入 文件和流

Posted 文件

篇首语:生活是活给自己看的,你有多大成色,世界才会给你多大脸色。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java语言深入 文件和流相关的知识,希望对你有一定的参考价值。

Java语言深入 文件和流  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Java I/O系统的类实在是太多了 这里我们只学习一些基本的和常用的 相信能够掌握这些就可以解决我们以后的普通应用了 什么是数据流 ?数据流是指所有的数据通信通道有两类流 InputStream and OutputStream Java中每一种流的基本功能依赖于它们InputStream 用于read OutputStream 用于write  读和写都是相对与内存说的 读就是从其他地方把数据拿进内存 写就是把数据从内存推出去这两个都是抽象类 不能直接使用 InputStream 的方法有 read() 从流中读入数据 有 中方式 int read() 一次读一个字节int read(byte[]) 读多个字节到数组中int read(byte[] int off int len) 指定从数组的哪里开始 读多长skip() 跳过流中若干字节available() 返回流中可用字节数 但基于网络时无效 返回 markSupported() 判断是否支持标记与复位操作mark() 在流中标记一个位置 要与markSupported()连用reset() 返回标记过的位置close() 关闭流 OutputStream 的方法:write(int) 写一个字节到流中write(byte[]) 将数组中的内容写到流中write(byte[] int off int len) 将数组中从off指定的位置开始len长度的数据写到流中close() 关闭流flush() 将缓冲区中的数据强制输出 File 类File 可以表示文件也可以表示目录 File 类控制所有硬盘操作构造器 File(File parent String child) 用父类和文件名构造File(String pathname) 用绝对路径构造File(String parent String child) 用父目录和文件名构造File(URI uri) 用远程文件构造常用方法 boolean createNewFile();boolean exists();例子 //建立 test txt 文件对象 判断是否存在 不存在就创建import java io *;public class CreateNewFilepublic static void main(String args[])File f=new File( test txt );tryif(!f exists())f createNewFile();elseSystem out println( exists );catch(Exception e)e printStackTrace();boolean mkdir()/mkdirs()boolean renameTo(File destination)例子 //看一下这 mkdir()/mkdirs() 的区别和 renameTo 的用法import java io *;public class CreateDirpublic static void main(String args[])File f=new File( test txt );File f =new File( Dir );File f =new File( Top/Bottom );File f =new File( newTest txt );tryf renameTo(f );f mkdir();f mkdirs();catch(Exception e)e printStackTrace();String getPath()/getAbsolutePath()String getParent()/getName()例子 //硬盘上并没有parent 目录和 test txt 文件 但我们仍然可以操作 因为我们创建了他们的对象 是对对象进行操作import java io *;public class Testpublic static void main(String args[])File f=new File( parent/test txt );File f =new File( newTest txt );trySystem out println(f getParent());System out println(f getName());System out println(f getPath());System out println(f getAbsolutePath());catch(Exception e)e printStackTrace();

  String list[] //显示目录下所有文件long lastModified() //返回   到最后修改时间的秒数boolean isDirectory()例子 //列出目录下的所有文件和目录 最后修改时间 是目录的后面标出<DIR> 是文件的后面标出文件长度import java io *;import java util *;public class Dirpublic static void main(String args[])File f=new File( Dir );String[] listAll=null;File temp=null;trylistAll=f list();for(int i= ;i<listAll length;i++)temp=new File(listAll<i>);System out print(listAll<i>+ \\t );if(temp isDirectory())System out print( \\t<DIR>\\t );elseSystem out print(temp length()+ \\t );System out println(new Date(temp lastModified()));catch(Exception e)e printStackTrace(); 文件流的建立File f=new File( temp txt );FileInputStream in=new FileInputStream(f);FileOutputStream out=new FileOutputStream(f);例子 文件拷贝import java io *;public class Copypublic static void main(String args[])FileInputStream fis=null;FileOutputStream fos=null;tryfis=new FileInputStream( c gif );fos=new FileOutputStream( c _copy gif );int c;while((c=fis read()) !=  )fos write(c);catch(Exception e)e printStackTrace();finallyif(fis != null) try fis close(); catch(Exception e) e printStackTrace(); if(fos!= null) try fos close(); catch(Exception e) e printStackTrace();  缓冲区流BufferedInputStreamBufferedOutputStream他们是在普通文件流上加了缓冲的功能 所以构造他们时要先构造普通流例子 文件拷贝的缓冲改进import java io *;public class Copypublic static void main(String args[])BufferedInputStream bis=null;BufferedOutputStream bos=null;byte buf[]=new byte[ ];trybis=new BufferedInputStream(new FileInputStream( persia mp ));bos=new BufferedOutputStream(new FileOutputStream( persia_copy mp ));int len= ;while( true )len=bis read(buf);if(len<= ) break;bos write(buf len);bos flush();//缓冲区只有满时才会将数据输出到输出流 用flush()将未满的缓冲区中数据强制输出catch(Exception e)e printStackTrace();finallyif(bis != null) try bis close(); catch(Exception e) e printStackTrace(); if(bos!= null) try bos close(); catch(Exception e) e printStackTrace();  原始型数据流DataInputStreamDataOutputStream他们是在普通流上加了读写原始型数据的功能 所以构造他们时要先构造普通流方法 readBoolean()/writeBoolean()readByte()/writeByte()readChar()/writeByte() 例子 //这个流比较简单 要注意的就是读时的顺序要和写时的一样import java io *;public class DataOutpublic static void main(String args[])DataOutputStream dos=null;trydos=new DataOutputStream(new FileOutputStream( dataout txt ));dos writeInt( );dos writeBoolean(true);dos writeLong( L);dos writeChar( a );catch(Exception e)e printStackTrace();finallyif(dos!=null)trydos close();catch(Exception e)import java io *;public class DataInpublic static void main(String args[])DataInputStream dis=null;trydis=new DataInputStream(new FileInputStream( dataout txt ));System out println(dis readInt());System out println(dis readBoolean());System out println(dis readLong());System out println(dis readChar());catch(Exception e)e printStackTrace();finallyif(dis!=null)trydis close();catch(Exception e)

   对象流串行化 对象通过写出描述自己状态的数值来记述自己的过程叫串行话对象流 能够输入输出对象的流将串行化的对象通过对象流写入文件或传送到其他地方对象流是在普通流上加了传输对象的功能 所以构造对象流时要先构造普通文件流注意 只有实现了Serializable接口的类才能被串行化例子 import java io *;class Student implements Serializableprivate String name;private int age;public Student(String name int age)this name=name;this age=age;public void greeting()System out println( hello  my name is  +name);public String toString()return  Student[ +name+ +age+ ] ;public class ObjectOutTestpublic static void main(String args[])ObjectOutputStream oos=null;tryoos=new ObjectOutputStream(new FileOutputStream( student txt ));Student s =new Student( Jerry );Student s =new Student( Andy );oos writeObject(s );oos writeObject(s );catch(Exception e)e printStackTrace();finallyif(oos!=null)tryoos close();catch(Exception e)e printStackTrace();import java io *;public class ObjectInTestpublic static void main(String args[])ObjectInputStream ois=null;Student s=null;tryois=new ObjectInputStream(new FileInputStream( student txt ));System out println( );s=(Student)ois readObject();System out println(s);s greeting();System out println( );s=(Student)ois readObject();System out println(s);s greeting();catch(Exception e)e printStackTrace();finallyif(ois!=null)tryois close();catch(Exception e)e printStackTrace(); 字符流 InputStreamReader/OutputStreamWriter上面的几种流的单位是 byte 所以叫做字节流 写入文件的都是二进制字节 我们无法直接看 下面要学习的是字节流Java采用 Unicode 字符集 每个字符和汉字都采用 个字节进行编码 ASCII 码是 Unicode 编码的自集InputStreamReader 是 字节流 到 字符桥的桥梁 ( byte >char 读取字节然后用特定字符集编码成字符)OutputStreamWriter是 字符流 到 字节流的桥梁 ( char >byte )他们是在字节流的基础上加了桥梁作用 所以构造他们时要先构造普通文件流我们常用的是:BufferedReader 方法 readLine()PrintWriter 方法 println()例子 import java io *;public class PrintWriterTestpublic static void main(String args[])PrintWriter pw=null;trypw=new PrintWriter(new OutputStreamWriter(new FileOutputStream( bufferedwriter txt )));pw println( hello world );catch(Exception e)e printStackTrace();finallyif(pw!=null)trypw close();catch(Exception e)e printStackTrace();

cha138/Article/program/Java/hx/201311/26725

相关参考

知识大全 Java语言深入:编写高级JScript代码

Java语言深入:编写高级JScript代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  创建

知识大全 Java语言深入--什么叫面向接口编程

Java语言深入--什么叫面向接口编程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在一个面向

知识大全 Java语言深入 多线程程序模型研究

Java语言深入多线程程序模型研究  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  多线程是较复杂

知识大全 JAVA编程语言开发下载文件

JAVA编程语言开发下载文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  [java]  /*

知识大全 java 是什么语言写的

java是什么语言写的JAVA中就虚拟机是其它语言开发的,用的是C语言+汇编语言基于此之上就是JAVA本身了虚拟机只起到解析作用另外,JAVA并不比C语言慢,说JAVA慢一般是九十年代那时候的JAVA

知识大全 深入Java核心 Java内存分配原理精讲

深入Java核心Java内存分配原理精讲  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java

知识大全 Java反射机制深入研究

Java反射机制深入研究  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java反射是Java语

知识大全 深入剖析Asp.net资源文件

深入剖析Asp.net资源文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一资源文件的定义 

知识大全 Java字节码深入解析

Java字节码深入解析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一Java字节代码的组织形

知识大全 Java布局管理器深入讨论

Java布局管理器深入讨论  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我们都知道java的G