`

浅谈write(byte[] b)和write(byte[] b,int off,int len)的区别

阅读更多

浅谈write(byte[] b)和write(byte[] b,int off,int len)的区别

相信大家都会用着2个方法吧,但是真正理解他们的机制相信不多,现在我以代码来解释他们的机制及区别


举例新建一个类


package io;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

byte[] b = new byte[15];
byte bnum = 110;
for (int i = 0; i < b.length; i++) {
b[i] = bnum++;
}

ByteArrayInputStream bi = new ByteArrayInputStream(b);
FileOutputStream fos;

try {
System.out
.println("-------------用write(byte[] b)来写入文件---------------");
fos = new FileOutputStream(new File("C:\\文件1.txt"));
int i = 0;
byte[] buffer = new byte[10];
System.out.println("写入数据如下:");
while ((i = bi.read(buffer)) > 0) {
p(buffer);
fos.write(buffer);
}
System.out
.println("-------------用write(byte[] b,int off,int len)来写入文件---------------");
bi.reset();
fos = new FileOutputStream(new File("C:\\文件1.txt"));
i = 0;
buffer = new byte[10];
System.out.println("写入数据如下:");
while ((i = bi.read(buffer)) > 0) {
p(buffer);
fos.write(buffer, 0, i);
}
fos.close();

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

public static void p(byte[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print((char) arr[i] + ",");
}
System.out.println();
}

}


打印结果如下:

-------------用write(byte[] b)来写入文件---------------
写入数据如下:
n,o,p,q,r,s,t,u,v,w,
x,y,z,{,|,s,t,u,v,w,
-------------用write(byte[] b,int off,int len)来写入文件---------------
写入数据如下:
n,o,p,q,r,s,t,u,v,w,
x,y,z,{,|,s,t,u,v,w,

其中写入到“文件1.txt”的内容为:nopqrstuvwxyz{|stuvw

其中写入到“文件1.txt”的内容为:nopqrstuvwxyz{|





分享到:
评论
1 楼 u010271301 2015-01-18  
大哥 能描述的跟详细点么?

相关推荐

    Java中FileOutputStream流的write方法

    FileOutputStream流的write方法有两种形式:write(byte[] b)和write(byte[] b, int off, int len)。 write(byte[] b)方法 write(byte[] b)方法用于将指定的字节数组b的所有内容写入到文件输出流中。该方法将从字节...

    Student.java

    java集合类的文件,//Student s = new Student(); s = null;... void write(byte[] b,int off,int len) 写出某个范围的字节道数组b中 b 数据写出的数组 off 第一个写出字节在b中的偏移量

    浅谈Java的输入输出流

    - `void write(byte[] b, int off, int len)` 2. **Reader** 和 **Writer** - `Reader` 和 `Writer` 是基于字符流的基础类,用于处理字符数据。 - `Reader` 类提供了三个基本的方法: - `int read()` - `int ...

    2021-2022年收藏的精品资料软件工程师浅谈Java的输入输出流技术步骤说明.docx

    如read(),read(byte[] b)和read(byte[] b, int off, int len),而OutputStream类则提供了写入字节的方法,如write(int b),write(byte[] b)和write(byte[] b, int off, int len)。这些方法为字节级别的数据传输提供...

    JavaIO总结.pdf

    OutputStream的API包括write(int b)、write(byte[] b)和write(byte[] b, int off, int len)三个方法,用于将数据写入输出流。 字符流常常用于读取文本类型的数据或字符串流的操作等等。字符流的API有Reader和Writer...

    Java IO字符流和字节流

    - **`public void write(byte[] b, int off, int len)`**:向输出流写入字节数组b中从下标off开始的len个字节。 - **`public void flush()`**:刷新输出流,强制写出所有缓冲的输出字节。 ##### 3. 字符流 字符流...

    大学课程讲义-Java基础-IO

    * InputStream(典型实现:FileInputStream):int read()、int read(byte[] b)、int read(byte[] b, int off, int len) * Reader(典型实现:FileReader):int read()、int read(char[] c)、int read(char[] c, ...

    浅谈Java的输入输出流.pdf

    - 主要有三个基本的方法:`read()`、`read(byte[] b)` 和 `read(byte[] b, int off, int len)`,分别用于读取单个字节、读取字节到数组以及读取指定长度的字节到数组中。 - 对于 `OutputStream` 类,提供了一组...

    FilterOutputStream 源码分析

    在 FilterOutputStream 中,最重要的是 `write(int b)` 和 `write(byte[] b, int off, int len)` 方法。这两个方法分别用于写入单个字节和字节数组到输出流。它们的默认实现会将操作委托给被包装的输出流。开发者...

    2018版 04747 Java语言程序设计(一)七八九十章知识点总结

    * void write( byte [ ] b ,int off , int len): 将数组 b[ ]中从下标 off 开始的 len 个字节写入数据流 * void close(): 当结束对输出流的操作时应该将其关闭 * void flush(): 刷新此输出流并强制写出所有缓冲的...

    _Java数据流.ppt

    `write(int b)` 写入一个字节,`write(byte[] b)` 写入整个数组,而 `write(byte[] b, int off, int len)` 可以指定写入部分数组。 除了基本的字节流,Java 还提供了许多派生类,如 `FileInputStream` 和 `...

    java数据流 I/O系统

    输出数据流的基类是`OutputStream`,其主要方法包括`write(int i)`用于写入单个字节,`write(byte b[])`和`write(byte b[], int off, int len)`用于写入字节数组的部分或全部内容。同样,`close()`方法用于关闭流,`...

    IO流day10.docx

    `write(int b)`用于写入单个字节,`write(byte[] b)`和`write(byte[] b, int off, int len)`则用于写入字节数组。值得注意的是,`FileOutputStream`会自动创建文件如果文件不存在。 2. **字符流** - **字符输入流...

    IO流与异常

    - `public void write(byte[] b, int off, int len) throws IOException`:向输出流写入一系列字节的一部分。 - `flush()`:刷新输出流缓冲区。 - `close()`:关闭输出流,释放资源。 #### 四、字符流 字符流...

    JavaSE进阶-06-IO流1

    `OutputStream` 是所有字节输出流的基类,包含写入字节的方法,如 `write()`、`write(byte[] b)` 和 `write(byte[] b, int off, int len)`。 2. 字符流: 字符流则适用于处理文本数据,基于 Unicode 字符集。Java ...

    Java中的字节流.

    - `public void write(byte[] b, int off, int len) throws IOException`:将`len`个字节从指定的byte数组写入此输出流,从索引`off`处开始读取。 - **其他常用方法**: - `public void flush() throws ...

    day019-io笔记和代码.rar

    void write(byte[] b, int off, int len) 将 len字节从位于偏移量 off的指定字节数组写入此文件输出流。 最常用 * //2. void write(byte[] b)将 b.length个字节从指定的字节数组写入此文件输出流。 ...

    Java字节流 从文件输入输出到文件过程解析

    write()方法有三种形式:write(b)、write(byte[] b)和write(byte[] b,int off,int len)。其中,write(b)将一个字节写入到文件中,write(byte[] b)将一个字节数组写入到文件中,write(byte[] b,int off,int len)将一...

    java字节流和字符流

    `OutputStream`则是所有字节输出流的基类,它提供写入字节数据的方法,如`write(int b)`用于写入一个字节,`write(byte[] b)`和`write(byte[] b, int off, int len)`用于写入字节数组的部分内容。 示例代码展示了...

    Java 将文件转为字节数组知识总结及实例详解

    在这个过程中,`write(byte[] b, int off, int len)`方法用于写入字节数组的一部分,其中`off`是数组起始位置,`len`是需要写入的字节数。我们使用循环读取文件,每次读取1024字节,直到文件末尾。 3. **注意点:...

Global site tag (gtag.js) - Google Analytics