问:

Java code

?

1
2
3
4
5
6
7
8
9
10
11
FileInputStream fis = new FileInputStream(new File("C:\\文件1.txt"));
FileOutputStream fos = new FileOutputStream(new File("C:\\文件2.txt"));
 
int i=0;
byte[] buffer = new byte[2];
while ((i = fis.read(buffer)) > 0) {
    fos.write(buffer, 0, i);
}
 
fis.close();
fos.close();

“文件1.txt”有1M, 这里我故意将buffer = new byte[2]。
fos.write(buffer, 0, i) 是不是就是说每次将byte[2]的内容写入到“文件2.txt”中?
还请问一下fos.write(buffer, 0, i)中第2个参数0,是什么意思?第2个参数可以是0吗?如果第2个参数总是为0,是不是就会把前面写入的内容覆盖了呢?
api上说的偏移量到底指的什么意思?

write(byte[])和write(byte[],off,len)到底有何区别,那个好一点呢?

答:

第2个参数0代表的是从buffer[0]开始取数据,取到buffer[i-1],因为java得区间基本上都是左闭又开的原则
如果第2个参数总是为0,实际你就每次只往文件中写人buffer[0]这个数据
偏移代表的就是每次写入文件的字节数
write(byte[])和write(byte[],off,len)到底有何区别,那个好一点呢?
区别就是write(byte[])每次都把byte数组中的数据写入了文件,write(byte[],off,len)可以定义写入的字节 数,如果按照你程序的写法,也就是每次写入的是读入的字节数
写程序的时候要用write(byte[],off,len)
举个例子文件1存有15字节的数据
FileInputStream fis = new FileInputStream(new File("C:\\文件1.txt"));
FileOutputStream fos = new FileOutputStream(new File("C:\\文件2.txt"));

int i=0;
byte[] buffer = new byte[10];
while ((i = fis.read(buffer)) > 0) {
    fos.write(buffer );
}

fis.close();
fos.close();
循环到第二次的时候,实际读入的是5个字节的数据,但是往文件而写的时候,却写入了10个字节的数据
这样就会出问题
顺便说下,如果读的是中文数据的话,用这种读写方式很如意出现乱码的。。。

关于OutputStream的write方法FAQ(from bbs.csdn.net)的更多相关文章

  1. http://bbs.csdn.net/topics/392028373

    博客 学院http://bbs.csdn.net/topics/392028373 下载 GitChat 更多 登录注册   首页 精选版块 论坛牛人 论坛地图 专家问答 我要发贴 论坛帮助     ...

  2. 快速掌握 Android Studio 中 Gradle 的使用方法 [转http://blog.csdn.net/feelang/article/details/41783317]

    Gradle是可以用于Android开发的新一代的 Build System, 也是 Android Studio默认的build工具. Gradle脚本是基于一种JVM语言 -- Groovy,再加 ...

  3. ObjectMapper处理从远程获取的Object对象 (http://bbs.csdn.net/topics/390337813?page=1)这个网址也有讲解

    微服务中从其他服务获取过来的对象,如果从Object强转为自定义的类型会报错,利用ObjectMapper转换. ObjectMapper mapper = new ObjectMapper(); D ...

  4. sql优化系列3(收集来源http://bbs.csdn.net/topics/250004467)

    如何加快查询速度? 1.升级硬件   2.根据查询条件,建立索引,优化索引.优化访问方式,限制结果集的数据量. 3.扩大服务器的内存 4.增加服务器CPU个数 5.对于大的数据库不要设置数据库自动增长 ...

  5. JAVA 静态内部类--转自http://bbs.csdn.net/topics/350021609

    内部类其实并不是非要声明成static的..主要还是要看实际情况决定..静态和非静态有不同的作用.. 引用一篇文章给楼主参考下吧. 在一个类中创建另外一个类,叫做成员内部类.这个成员内部类可以静态的( ...

  6. ThinkPHP实现定时执行任务的两种方法 - 博客频道 - CSDN.NET

    在平常的项目中我们总是会遇到需要将某个方法任务定时执行的问题,定时执行方法任务如果我们拥有服务器的权限,我们可以直接在服务器设置定时任务,例如在Windows的任务计划程序中进行设置,在Linux中编 ...

  7. Stylish: http://bbs.csdn.net/topics/

    [id^=google_ads_], [id^=bd_ad_], #cpro_u2392825, [id^=BAIDU_SSP_], .bbs_top_ad, .csdn-toolbar, #topi ...

  8. php 单线程 (http://bbs.csdn.net/topics/390778072)

    以前想php单线程,网站肯定是用于多人访问的,如果访问量大,那岂不是出现排队问题? apache+php是阻塞型处理,nginx+php是异步非阻塞的,php有进程管理器,fpm fcgi什么的.ph ...

  9. npoi 加密 https://bbs.csdn.net/topics/380226272

    终于解决了,.1.用excel新建一个文件作为模板,可以是空内容,在excel中对文件进行加密,如密码为:12345. 2.在NPOI读取前,调用:Biff8EncryptionKey.Current ...

随机推荐

  1. 云计算之路-试用Azure:竟然无法重置虚拟机的管理员密码

    在忘记管理员密码的情况下,可以远程重置服务器的管理员密码是云计算服务的一个优势,这是使用自己的物理服务器无法实现的. 但是,在使用Azure的时候,我们找遍Azure管理控制台也没找到可以重置虚拟机( ...

  2. .Net Framework 之 托管模块与程序集的关系

    一.基本概念: --托管模块:一个标准的32的可移植执行体(PE32)文件或一个标准的64位可移植执行体(PE32+)文件.由用支持CLR的任何一种语言创建的源代码文件,再经过相应的编译器检查语法和分 ...

  3. JMeter 四:建立高级web测试计划

    发送带有Header的请求 参考:http://jmeter.apache.org/usermanual/build-adv-web-test-plan.html#header_manager Jme ...

  4. 运行maven pom.xml文件后编译环境变为jdk1.5

    idea中运行pom.xml文件后,将编译环境变成了1.5,造成一系列的编译问题很是不方便. 以下是解决方法: 在"pom.xml"里加入如下代码: <properties& ...

  5. 小程序 的 textarea 组件 层级问题如何解决

        像这样的   既然是定位(脱离文档流),为啥不加层级关系,层级关系不明确,很容易出现显示异常,给遮罩加z-index:10,弹出框加z-index:11 即可 解决方案参考: https:// ...

  6. BroadcastReceiver应用详解——广播

    转自:http://blog.csdn.net/liuhe688/article/details/6955668 BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收 ...

  7. BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第2章节--SharePoint 2013 App 模型概览 总结

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第2章节--SharePoint 2013 App 模型概览 总结         SharePoint Apps这三个新 ...

  8. ASP.NET MVC源码分析系列

    Controller下的JsonResult的ExecuteResult方法 public override void ExecuteResult(ControllerContext context) ...

  9. (三)Solr——Solr的基本使用

    1. Schema.xml 在schema.xml文件中,主要配置了solrcore的一些数据信息,包括Field和FieldType的定义等信息,在solr中,Field和FieldType都需要先 ...

  10. struts2中 JFreeChart使用

    添加3个包 struts2-jfreechart-plugin-2.3.16.3.jar jcommon-1.0.16.jar jfreechart-1.0.13.jar struts.xml中配置 ...