输入输出

来源:互联网 发布:软件管理沉思录 编辑:程序博客网 时间:2024/05/07 12:03


数据操作

java.io.RandomAccessFile
    随机文件读取,可以跳过字符,随机读取,但是,正是因为这个原因,是他只能存储定值的数据

java.io.InputStream
    文件读取的抽象父类,available 计算文件的大小
 
java.io.OutputStream
        文件写入·的抽象父类

java.io.FileInputStream;
    文件读取

java.io.FileOutputStream;
    文件写入

以上都是字节流的操作


一下是字符流的操作
    Reader 抽象类
    Writer 抽象类
import java.io.FileReader;
    可以将数据读入char[] 然后直接输出

import java.io.FileWriter;
    可以直接操作字符

对于字节流,和字符流的不同
字节流,直接操作文件,字符流要先转入缓存再操作文件
对于字节流,不关闭,文件直接就可以写在文件上
但是,对于,字符流,如果不关闭,或者不刷新,数据不会更新在文件上,
所欲,必须关闭数据源


转换流
import java.io.InputStreamReader;、
    将数据有字节转换温字符 (byte - > char)
import java.io.OutputStreamWriter;
    将数据有字符转换为字节  (char - > byte)

OutputStream  FileoutputStream    | FileoutputStream FileWiter   
                          字符 《--》 字节   FileWiter 和 FileReader 并不是 Writer Reader 的子类 而是而是转换流的子类
inoutStream FileinputStream       |  FileinputStream Filereader

Writer

Input


内存操作流

import java.io.ByteArrayInputStream;
    写入数据
import java.io.ByteArrayOutputStream;
    输出数据
    对于内存操作流数据,数据被分装,其他对于内存操作内数据不可获取(以前我还以为可以同通过FileWriter 直接把内存里面的数据直接flush 到文件,但是数据是分装的 不可访问)
    该有对于这个数据的输入和输出 有点特别 不好记

管道流

        PipedInputStream;
        PrintStream
         输入管道
        PipedOutputStream;
         输出管道
         可以通过输出管道的connect 来连接输入管道 这可能是最原始的数据通信(自己查查API)


打印流
    PrintWriter     字符
    PrintStream     字节流
    最方便的输出数据
    但是必须关闭数据

Scanner  
    最方便的数据输入


对于数据的读取
还可以通过重定向

        String path="C:\\Users\\Echo\\Desktop\\echoTest.txt";        
        File file =new File(path);        
        System.setIn(new FileInputStream(file));        
        Scanner in= new Scanner(System.in);
        System.out.println(in.nextLine());



---------
    String path="C:\\Users\\Echo\\Desktop\\echoTest.txt";        
        File file =new File(path);            
        Scanner in= new Scanner(file);
        System.out.println(in.nextLine());
    

    其实好像都差不多

BufferedReader
    从缓冲数据读取
    BufferedReader buf =new BufferedReader(new InputStreamReader(System.in));

按照一定数据读取
DataOutputStream
DataInputStream、

合并流数据
SequenceInputStream


数据压缩流
    ZipOutputStream
    eg:
        File file =new File("C:\\Users\\Echo\\Desktop\\one.txt");
        File zipfile =new File("C:\\Users\\Echo\\Desktop\\onezip.zip");        
        InputStream input =new FileInputStream(file);        
        ZipOutputStream ou =new ZipOutputStream(new FileOutputStream(zipfile));        
        ou.putNextEntry(new ZipEntry(file.getName()));                             //加载实体
        ou.setComment("echozip");                                                 //设置注释
        byte [] temp = new byte[input.available()];        
        input.read(temp);        
        ou.write(temp);                                                             //对实体的内容的写入
        input.close();
        ou.close();

    eg:
        String info="F:\\echo";        
        File files = new File(info);        
        File file[] =files.listFiles();        
        File zfile =new File(info+".zip");
        InputStream input=null;
        ZipOutputStream ou =new ZipOutputStream(new FileOutputStream(zfile));        
        for(File f:file)
        {            
            input=new FileInputStream(f);                        
            ou.putNextEntry(new ZipEntry(f.getName()));                             //加载实体
            ou.setComment("echozip");                                                 //设置注释
            byte [] temp = new byte[input.available()];        
            input.read(temp);        
            ou.write(temp);                                                        //对实体的内容的写入            
        }        
        input.close();
        ou.close();



解压文件
    ZipFile
     eg:
        String info="C:\\Users\\Echo\\Desktop\\onezip.zip";
        File outFile =new File("C:\\Users\\Echo\\Desktop\\onezip.txt");
        ZipFile zip =new ZipFile(info);        
        ZipEntry entry =zip.getEntry("two.txt");    
        InputStream input =zip.getInputStream(entry);        
        OutputStream out= new FileOutputStream(outFile);        
        byte [] temp =new byte[input.available()];        
        input.read(temp);
        out.write(temp);


获取Entry

    eg:
        String info="F:\\echo.zip";                
        ZipInputStream zip=new ZipInputStream(new FileInputStream(info));
        ZipEntry entry =null;
        while((entry=zip.getNextEntry())!=null)
        System.out.println(entry.getName());

        配合使用ZipFile

回退流
    PushbackInputStream


0 0
原创粉丝点击