黑马程序员_IO_03

来源:互联网 发布:实战nginx 下载 编辑:程序博客网 时间:2024/04/30 03:56


----------------------Android培训、Java培训、java学习型技术博客、期待与您交流! ----------------------


File类:用来将文件或者文件夹封装成对象,方便对文件与文件夹的属性侵袭进行操作。
构造函数:
 File(String pathname)
          通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
 File(String parent, String child)
          根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例
 File(File parent, String child)
          根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例
简单方法:
1、创建
 boolean createNewFile()
          当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
 static File createTempFile(String prefix, String suffix)
          在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。
 static File createTempFile(String prefix, String suffix, File directory)
           在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。
 boolean mkdir()
          创建此抽象路径名指定的目录。
 boolean mkdirs()
          创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
 
2、删除
 boolean delete()
          删除此抽象路径名表示的文件或目录。
 void deleteOnExit()
          在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。

3、判断
 boolean exists()
          测试此抽象路径名表示的文件或目录是否存在。
 boolean isDirectory()
          测试此抽象路径名表示的文件是否是一个目录。
 boolean isFile()
          测试此抽象路径名表示的文件是否是一个标准文件。
 long length()
          返回由此抽象路径名表示的文件的长度。
 boolean isAbsolute()
          测试此抽象路径名是否为绝对路径名。

4、获取信息
 String getName()
          返回由此抽象路径名表示的文件或目录的名称。
 String getParent()
          返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
 String getPath()
          将此抽象路径名转换为一个路径名字符串。
 File getAbsoluteFile()
          返回此抽象路径名的绝对路径名形式。
 String getAbsolutePath()
          返回此抽象路径名的绝对路径名字符串。
 long lastModified()
          返回此抽象路径名表示的文件最后一次被修改的时间。
 long length()
          返回由此抽象路径名表示的文件的长度。

其他方法:
 static File[] listRoots()
          列出可用的文件系统根。
 String[] list()
          返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
    此路径表示的目录如果不存在将返回null,无法用进行高级for进行遍历。
 String[] list(FilenameFilter filter)
          返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。
 File[] listFiles()
          返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
 File[] listFiles(FilenameFilter filter)
          返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。

import java.io.*;class FileDemo {public static void main(String[] args) throws IOException{//Create_method();//Delete_method();//PanDuan_method();Get_method();} public static void Get_method(){File f = new File("java_lx\\File\\File01.java");sop("length:"+f.length());sop("parent:"+f.getParent());sop("path:"+f.getPath());sop("AbsolutePath:"+f.getAbsolutePath());sop("AbsoluteFile:"+f.getAbsoluteFile());}public static void PanDuan_method(){File f = new File("123.java");sop("exists:"+f.exists());sop("file:"+f.isFile());sop("directory:"+f.isDirectory());sop(f.isAbsolute());}public static void Delete_method(){File f0 = new File("123.java");sop("delete:"+f0.delete());File f4 = new File("123");sop("delete:"+f4.delete());}public static void Create_method()throws IOException{File f0 = new File("123.java");sop("create:"+f0.createNewFile());File f4 = new File("123"+File.separator+"java");sop("mkdir:"+f4.mkdirs());//File f1 = File.createTempFile("abc",".txt");//sop(f1);//File f2 = new File ("F:\\java\\java_lx\\File");//File f3 = File.createTempFile("abc",".txt",f2);//sop(f3);}public static void Constructor_method(){File f0 = new File("123.java");File f1 = new File("F:\\java\\java_lx\\File\\123.java");File f2 = new File ("F:\\java\\java_lx\\File","123.java");String str1 = "F:\\java\\java_lx\\File";File f3 = new File(str1,"123.java");String str2 = "123.java";File f4 = new File(str1,str2);File f5 = new File(str1);File f6 = new File(f5,"123.java");sop(f0);sop(f1);sop(f2);sop(f3);sop(f4);sop(f5);sop(f6);}public static void sop(Object obj){System.out.println(obj);}}


打印流:
该流提供了打印方法,可以将各种数据类型的数据原样打印。

字节打印流:PrintStream
构造函数可以接收的参数类型:
1、file对象。File
2、字符串路径。String
3、字节输出流。OutputStream

字符打印流:PrintWriter
构造函数可以接收的参数类型:
1、file对象。File
2、字符串路径。String
3、字节输出流。OutputStream
4、字符输出流。Writer

import java.io.*;class PrintDemo {public static void main(String[] args) throws IOException{BufferedReader bufr =new BufferedReader(new InputStreamReader(System.in));PrintWriter out = new PrintWriter(System.out,true);for(String line=bufr.readLine(); line!=null; line=bufr.readLine()){if("over".equals(line))break;//可以自动换行out.println(line.toUpperCase());//不能自动换行,也不可以刷新//out.write(line.toUpperCase());//out.flush();}bufr.close();out.close();}}


合并流:
SequenceInputStream:是InputStream的子类。
表示其他输入流的逻辑串联。
它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,
接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。
构造函数:
SequenceInputStream(InputStream s1, InputStream s2)
SequenceInputStream(Enumeration<? extends InputStream> e)

import java.io.*;import java.util.*;class SequenceDemo{public static void main(String[] args) throws IOException{//切割FileInputStream fis = new FileInputStream("0.txt");FileOutputStream fos = null;byte by = new byte[1024];int len = 0;int count = 1;while((len=fis.read(by))!=-1){fos = new FileOutputStream(count+".part");fos = write(buf,o,len);fos.close();}fis.close();//合并Vector<FileInputStream> v = new Vector<FileInputStream>();v.add(new FileInputStream("1.part"));v.add(new FileInputStream("2.part"));v.add(new FileInputStream("3.part"));Enumeration<FileInputStream> en = v.elements();SequenceInputStream sis = new SequenceInputStream(en);FileOutputStream fos = new FileOutputStream("4.txt");byte[] buf = new byte[1024];int len = 0;while((len=sis.read(buf))!=-1){fos.write(buf,0,len);}fos.close();sis.close();}}
管道流
PipedInputStream和PipedOutputStream
可以将管道输出流连接到管道输入流来创建通信管道。管道输出流是管道的发送端。
通常,数据由某个线程写入 PipedOutputStream 对象,并由其他线程从连接的 PipedInputStream 读取

import java.io.*;class PipedStreamDemo{public static void main(String[] args) throws IOException{PipedInputStream pis = new PipedInputStream();PipedOutputStream pos = new PipedOutputStream();pis.connect(pos);Read r = new Read(pis);Write w = new Write(pos);new Thread(r).start();new Thread(w).start();}}class Read implements Runnable{private PipedInputStream pis;Read(PipedInputStream pis){this.pis = pis;}public void run(){try{byte[] by = new byte[1024];System.out.println("无数据,读取阻塞");int len = pis.read(by);System.out.println("读到数据,阻塞结束");System.out.println(new String(by,0,len));pis.close();}catch(IOException e){throw new RuntimeException("管道读取流失败");}}}class Write implements Runnable{private PipedOutputStream pos;Write(PipedOutputStream pos){this.pos = pos;}public void run(){try{System.out.println("等待7秒写入数据");Thread.sleep(7000);pos.write("asdfg".getBytes());System.out.println("数据写入完毕");pos.close();}catch(Exception e){throw new RuntimeException("管道输出流失败");}}}

ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化。ObjectOutputStream和ObjectInputStream分别与FileOutputStream和FileInputStream一起使用时,可以为应用程序提供对对象图形的持久存储。
import java.io.*;class ObjectStreamDemo{public static void main(String[] args) throws Exception{writeObj();readObj();}public static void readObj()throws Exception{ObjectInputStream ois = new ObjectInputStream(new FileInputStream("Obj.txt"));Person p = (Person)ois.readObject();System.out.println(p);Person p1 = (Person)ois.readObject();System.out.println(p1);/*for(Object obj=ois.readObject(); obj!=null; obj=ois.readObject()){Person p = (Person)obj;System.out.println(p);}*/ois.close();}public static void writeObj()throws Exception{ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("Obj.txt"));oos.writeObject(new Person("zhangsan",26));oos.writeObject(new Person("lisi",23));oos.close();}}

----------------------Android培训、Java培训、java学习型技术博客、期待与您交流! ----------------------

0 0