精华内容
下载资源
问答
  • java 文件

    2013-05-29 20:26:10
    在java API当中,可以从其中读入一个字节序列对象称作输入,而可以向其中写入一个字节序列对象称作输出。形象描述就是你从外部文件内容读取到java程序中是输入,从java程序到外部文件是输出...
    在java API当中,可以从其中读入一个字节序列的对象称作输入流,而可以向其中写入一个字节序列的对象称作输出流。形象的描述就是你从外部文件中的内容读取到java程序中的是输入流,从java程序到外部文件中的是输出流。

    在输入输出流使用的时候,要在使用完毕的时候进行关闭,因为输入输出流占用系统的一定的资源。java的输入输出流有两种职责,一种是从文件和其他更外部的位置获取字节,另一种是将字节组装到更有用的数据类型中。例如:
    FileInputStream fin=new FileInputStream("a.txt");
    DataInputStream din=new DataInputStream(fin);
    double s=din.readDouble();

    为了更方便的控制输入输出流,可以在输入输出流中加入过滤功能。加入的位置如下所示:
    FileInputStream fin=new FileInputStream("a.txt");
    BufferedInputStream bis=new BufferedInputStream(fin);
    DataInputStream din=new DataInputStream(bis);
    double s=din.readDouble();
    假如要读取ZIP文件,可以使用如下方法:
    FileInputStream fin=new FileInputStream("a.txt");
    ZipInputStream zis=new ZipInputStream(fin);
    DataInputStream din=new DataInputStream(zis);

    从上面的例子中可以分析出输入流的过滤序列。
    下面是一段输入输出流的代码赏析:
    第一段,数据单元的实体Bean,含有一些输入输出操作方法:
    package stream;

    import java.io.DataInput;
    import java.io.DataOutput;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
    import java.util.Scanner;

    public class Employee {
    public static final int NAME_SIZE=40;
    public static final int RECORD_SIZE=2*NAME_SIZE+8+4+4+4;
        private String name;
        private Double salary;
        private Date hireDay;
        
    public Employee(){
    }
    public Employee(String n,double s,int year,int month,int day){
    name=n;
    salary=s;
    GregorianCalendar calendar=new GregorianCalendar(year, month-1, day);
    hireDay=calendar.getTime();
    }

    public String getName() {
    return name;
    }

    public Double getSalary() {
    return salary;
    }

    public Date getHireDay() {
    return hireDay;
    }
    public void raiseSalary(double percent){
    salary+=salary*percent/100;
    }
    public String toString(){
    return getClass().getName()+"[name="+name+",salary="+salary+",hireDay="
    +hireDay+"]";
    }
    public void writeData(PrintWriter out){
      GregorianCalendar calendar=new GregorianCalendar();
      calendar.setTime(hireDay);
      out.println(name+"|"+salary+"|"+calendar.get(Calendar.YEAR)+"|"
    +(calendar.get(Calendar.MONTH)+1)+"|"+calendar.get(Calendar.DAY_OF_MONTH));
    }
    public void readData(Scanner in){
    String line=in.nextLine();
    String[] tokens=line.split("\\|");
    name=tokens[0];
    salary=Double.parseDouble(tokens[1]);
    int y=Integer.parseInt(tokens[2]);
    int m=Integer.parseInt(tokens[3]);
    int d=Integer.parseInt(tokens[4]);
    GregorianCalendar calendar=new GregorianCalendar(y, m-1,d);
    hireDay=calendar.getTime();
    }
    public void writeData(DataOutput out) throws IOException{
    DataIO.writeFixedString(name, NAME_SIZE, out);
    out.writeDouble(salary);
    GregorianCalendar calendar=new GregorianCalendar();
    calendar.setTime(hireDay);
    out.writeInt(calendar.get(Calendar.YEAR));
    out.writeInt(calendar.get(Calendar.MONTH)+1);
    out.writeInt(calendar.get(Calendar.DAY_OF_MONTH));
    }
    public void readData(DataInput in) throws IOException{
    name=DataIO.readFixedString(NAME_SIZE, in);
    salary=in.readDouble();
    int y=in.readInt();
    int m=in.readInt();
    int d=in.readInt();
    GregorianCalendar calendar=new GregorianCalendar(y, m-1, d);
    hireDay=calendar.getTime();
    }
    }

    DataIO这个类里面包含了读写固定长度的数据单元
    package stream;

    import java.io.DataInput;
    import java.io.DataOutput;
    import java.io.IOException;

    public class DataIO {
        public static String readFixedString(int size,DataInput in)throws IOException{
         StringBuilder b=new StringBuilder(size);
         int i=0;
         boolean more=true;
         while(more&i<size){
         char ch=in.readChar();
         i++;
         if(ch==0)more=false;
         else b.append(ch);
         }
         in.skipBytes(2*(size-i));
         return b.toString();
        }
        
        public static void writeFixedString(String s,int size,DataOutput out) throws IOException{
         for(int i=0;i<size;i++){
         char ch=0;
         if(i<s.length())ch=s.charAt(i);
         out.writeChar(ch);
         }
        }
    }

    下面是两种输入数出流的运用:
    1.文本输入输出流:
    package stream;

    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Scanner;

    public class TextFileTest {
       
    private static Employee[] readData(Scanner in){
    int n=in.nextInt();
    in.nextLine();
    Employee[] employees=new Employee[n];
    for(int i=0;i<n;i++){
    employees[i]=new Employee();
    employees[i].readData(in);
    }
    return employees;
    }
    private static void writeData(Employee[] employees,PrintWriter out)throws IOException{
    out.println(employees.length);
    for(Employee e:employees){
    e.writeData(out);
    }
    }
    public static void main(String[]args){
    Employee[] staff=new Employee[3];
    staff[0]=new Employee("Carl Cracker",7500,1987,12,15);
    staff[1]=new Employee("Harry Hacker",5000,1989,10,1);
    staff[2]=new Employee("Tony Tester",4000,1990,3,15);
    try {
    PrintWriter out=new PrintWriter("employee.dat");
    writeData(staff,out);
    out.close();
    Scanner in=new Scanner(new FileReader("employee.dat"));
    Employee[] newstaff=readData(in);
    in.close();
    for(Employee e:newstaff){
    System.out.println(e);
    }
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }

    2.RandomFile方式的
    package stream;

    import java.io.DataOutputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.RandomAccessFile;

    public class RandomFileTest {

    public static void main(String[]args){
    Employee[] staff=new Employee[3];
    staff[0]=new Employee("Carl Cracker",7500,1987,12,15);
    staff[1]=new Employee("Harry Hacker",5000,1989,10,1);
    staff[2]=new Employee("Tony Tester",4000,1990,3,15);
    try {
    DataOutputStream out=new DataOutputStream(new FileOutputStream("employee.dat"));
    for(Employee e:staff)e.writeData(out);
    out.close();
    RandomAccessFile in=new RandomAccessFile("employee.dat", "r");
    int n=(int) (in.length()/Employee.RECORD_SIZE);
    Employee[] newstaff=new Employee[n];
    for(int i=n-1;i>=0;i--){
    newstaff[i]=new Employee();
    in.seek(i*Employee.RECORD_SIZE);
    newstaff[i].readData(in);
    }
    in.close();
    for(Employee e:newstaff){
    System.out.println(e);
    }
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }

    分别运行这两种输入数流,可以很轻松的发现它们产生文件内容的区别 



    展开全文
  • <strong>问题补充:</strong><br />问题找到了,这段代码本身没有问题,是外层调用方法写错了,主要是太大意了,外层方法是首先从数据库中把数据读出来写入.del文件,然后再调用这个方法将.del文件压缩。...
  • JAVA_API1.6文档(中文)

    万次下载 热门讨论 2010-04-12 13:31:34
    javax.imageio.stream Java Image I/O API 一个包,用来处理从文件中产生低级别 I/O。 javax.management 提供 Java Management Extensions 核心类。 javax.management.loading 提供实现高级动态加载类...
  • java api最新7.0

    千次下载 热门讨论 2013-10-26 17:34:06
    javax.imageio.stream Java Image I/O API 一个包,用来处理从文件中产生低级别 I/O。 javax.management 提供 Java Management Extensions 核心类。 javax.management.loading 提供实现高级动态加载类。...
  • Java 1.6 API 中文 New

    2013-10-26 14:08:22
    javax.imageio.stream Java Image I/O API 一个包,用来处理从文件中产生低级别 I/O。 javax.management 提供 Java Management Extensions 核心类。 javax.management.loading 提供实现高级动态加载类。...
  • JDK_1_6 API

    2017-03-04 23:06:21
    javax.imageio.stream Java Image I/O API 一个包,用来处理从文件中产生低级别 I/O。 javax.management 提供 Java Management Extensions 核心类。 javax.management.loading 提供实现高级动态加载类...
  • 局域网文件传输 使用React.js,C ++和MongoDB,此应用程序允许在本地网络上托管和传输...该服务使用C ++编写,可读取字节流并将其写入存储。 使用库,侦听来自API网关传入HTTP请求。 有关存储服务代码,请参见 。
  • java jdk-api-1.6 中文 chmd

    2018-03-22 11:32:15
    javax.imageio.stream Java Image I/O API 一个包,用来处理从文件中产生低级别 I/O。 javax.management 提供 Java Management Extensions 核心类。 javax.management.loading 提供实现高级动态加载类...
  • javax.imageio.stream Java Image I/O API 一个包,用来处理从文件中产生低级别 I/O。 javax.management 提供 Java Management Extensions 核心类。 javax.management.loading 提供实现高级动态加载类。...
  • JavaAPI中文chm文档 part2

    2011-08-19 08:58:42
    javax.imageio.stream Java Image I/O API 一个包,用来处理从文件中产生低级别 I/O。 javax.management 提供 Java Management Extensions 核心类。 javax.management.loading 提供实现高级动态加载类...
  • JavaAPI1.6中文chm文档 part1

    热门讨论 2011-08-19 08:33:34
    javax.imageio.stream Java Image I/O API 一个包,用来处理从文件中产生低级别 I/O。 javax.management 提供 Java Management Extensions 核心类。 javax.management.loading 提供实现高级动态加载类...
  • obs推延时3秒左右

    2021-01-05 04:22:50
    合并写指服务器缓存一定数据后才会一次性写入socket,这样能提高性能,但是会提高延时 开启后会同时关闭TCP_NODELAY并开启MSG_MORE <p>mergeWriteMS=0 全局时间戳覆盖开关,在转协议时&#...
  • Node.js关于Stream理解

    2020-12-08 19:35:53
    文件的处理全部在中处理,应该说在缓存中处理数据,最终输出到文件中,中间不形成任何临时文件。 想想grunt怎么用,usemin后产生一个处理后的文件到磁盘,从磁盘读取该文件...
  • Delphi一个超级函数代码库

    热门讨论 2010-03-29 22:30:46
    API函数简单调用,如建立进程,建立文件映射,建立、读取管道(可以捕捉DOS程序输出)等。 StrFuncs.pas 字符串处理单元,完全兼容宽字节处理(即使用wideString),特有中文字符串处理函数(如简繁转换等等)...
  • redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求所有参数重新请求,所以session,request参数都可以获取。 23、EJB与JAVA BEAN区别?  Java Bean 是可...
  • reflect 更高效反射API https://github.com/modern-go/reflect2 msgfmt (格式化字符串,将%更换为变量名) https://github.com/modern-go/msgfmt 可取消goroutine https://github.com/modern-go/concurrent ...
  • Java访问权限控制源代码 1个目标文件 摘要:Java源码,文件操作,权限控制 Java访问权限控制,为Java操作文件、写入文件分配合适权限,定义写到文件信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出。...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java访问权限控制,为Java操作文件、写入文件分配合适权限,定义写到文件信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
  • 实例140 获得中英文混合字符串的字节长度 实例141 获得某个字符在一个字符串中最后出现的位置 实例142 获得字符串中指定后几位字符 5.5 综合应用 实例143 从字符串中分离文件路径、文件名及其扩展名 实例144 ...
  • 实例140 获得中英文混合字符串的字节长度 实例141 获得某个字符在一个字符串中最后出现的位置 实例142 获得字符串中指定后几位字符 5.5 综合应用 实例143 从字符串中分离文件路径、文件名及其扩展名 实例144 ...
  • 此时,不能再向对象输出流写入任何数据,先前写入数据存在于内存缓冲区中, // 在调用下边getInputStream()函数时才把准备好http请求正式发送到服务器 outStrm.close(); } // 调用HttpURLConnection...
  • java开源包1

    千次下载 热门讨论 2013-06-28 09:14:34
    缓存读取自redisslave节点,写入到redismaster节点。 Java对象SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集能力.利用JoSQL可以像操作数据库中数据一样对任何Java...
  • java开源包12

    热门讨论 2013-06-28 10:14:45
    缓存读取自redisslave节点,写入到redismaster节点。 Java对象SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集能力.利用JoSQL可以像操作数据库中数据一样对任何Java...
  • java核心技术第八版(1,2卷)源码

    千次下载 热门讨论 2009-04-04 21:04:35
    本书是Java技术权威指南,全面覆盖Java技术高级主题,包括文件、XML、网络、数据库编程、高级Swing、高级 AWT、JavaBean构件、安全、分布式对象、脚本、编译与注解处理等,同时涉及本地化、国际化以及Java SE ...
  • Java资源包01

    2016-08-31 09:16:25
    缓存读取自redisslave节点,写入到redismaster节点。 Java对象SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集能力.利用JoSQL可以像操作数据库中数据一样对任何Java...
  • 7.10.1 获得图像文件类型读取器和写入器 7.10.2 读取和写入带有多个图像的文件 7.11 图像处理 7.11.1 构建光栅图像 7.11.2 图像过滤 7.12 打印 7.12.1 图形打印 7.12.2 打印多页文件 7.12.3 打印预览 7.12.4 打印...

空空如也

空空如也

1 2 3 4
收藏数 73
精华内容 29
关键字:

api获取的字节流写入文件