java文件读取 while ((len = reader.read(buffer)) != -1){}的理解
源文件
InputStreamReader reader=new InputStreamReader(new FileInputStream(file),"UTF-8");
//读入缓冲区
char[] buffer = new char[1024];
//读入结果
StringBuffer result = new StringBuffer();
//每次读入缓冲区的长度
int len;
//从读入流中读取文件内容并形成结果
while ((len = reader.read(buffer)) != -1) {
result.append(buffer, 0, len);
}
.read(buffer)的意思就是一次性读取1024个数据,返回值是一个int,就是返回的是读取的指针的下标,当指针为-1时,就代表读取完成。
每次读取时,指针都会往下移1024个数据。
接下来就是拼接字符串,如果你是字节型的数据的话,就调用new String(byte [])这个方法来转化,将字节转化为字符。
这里面还有一个问题就是如果你使用字符读取流读取中文乱码的话,就要使用
InputStreamReader这个类来转换一下编码格式。.read(buffer)就是将文件数据一次性读取1024读取到buffer中,然后继续while循环,直到读到文件末尾。用Stringbuffer在while循环中不断的拼接,最后循环结束在一次性输出去。
不要使用
println,因为这就意味着,每次输出就换行,即使在循环结束后再使用println,它还是会输出完再换一行,如果在while循环里面,就意味着每1024个数据就要换行。
文件里面的格式和java读取到的格式是一样的,所以不要管文件本身的格式。比如说:
asdas
sakdba
asdbsaklfna
a
这些文件里面的换行根本就不需要考虑。
如果是输出流,注意每次都要flush,清空“管道”
如果是缓存流,它循环一次,一次读取一行,并且不带换行的,那种才需要带println的
java文件读取 while ((len = reader.read(buffer)) != -1){}的理解的更多相关文章
- JAVA文件读取FileReader
JAVA文件读取FileReader 导包import java.io.FileReader 创建构造方法public FileReader(String filename),参数是文件的路径及文件名 ...
- java 文件读取大全
1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile { /** * 以字节为单位读取文件,常用 ...
- java 文件读取写入
public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. */ public static void readFileB ...
- java文件读取与写入
package com.myjava; import java.io.*; import java.util.ArrayList; import java.util.Collections; impo ...
- Java文件读取
package a.ab; import java.io.*; public class FileWrite { public static void main(String[] args) { Fi ...
- JAVA 文件读取写入后 md5值不变的方法
假如我们想把某文件读入 StringBuffer 并写入新文件,新文件md5值需要保持不变(写入新文件后保证和源文件一模一样), 我们就需要在操作 StringBuffer 时附加换行符: Strin ...
- 【转】java 文件 读取目录下的所有文件(包括子目录)
转自:http://www.cnblogs.com/pricks/archive/2009/11/11/1601044.html import java.io.File; import java.io ...
- java 文件读取的一些方法
web项目读取日志文件 //得到路径 String appPath = filterConfig.getServletContext().getRealPath("/"); // ...
- 从零开始学 Web 之 HTML5(三)网络监听,全屏,文件读取,地理定位接口,应用程序缓存
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- HTML5 文件读取
一.定义 input的file类型会渲染为一个按钮和一段文字.点击按钮可打开文件选择窗口,文字表示对文件的描述(大部分情况下为文件名):file类型的input会有files属性,保存着文件的相关信息 ...
随机推荐
- Python中字符串截取
# 截取字符串时,如果位数不够,Python不会报错,而是返回空字符串 # 这是因为Python中的字符串是不可变的,所以当我们尝试访问一个不存在的索引时,Python会返回空字符串而不是报错 # 示 ...
- 初识Redis与桌面客户端
Redis介绍 什么是Redis Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库. Redi ...
- JSTL fn函数使用
首先,我们要在页面的最上方引用: <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/function ...
- 关于.Net 6.0 在Linux ,Docker容器中,不安装任何依赖就生成图形验证码!!!!!!!!!!!
在.Net Framework时代,我们生成验证码大多都是用System.Drawing. 在.Net 6中使用也是没有问题的. 但是,System.Drawing却依赖于Windows GDI+. ...
- python url中文转码_python实现转换url编码的方法
python url中文转码_python实现转换url编码的方法 urllib.parse命令:url编码转换 >>> import urllib.parse >>&g ...
- 关于Async、Await的一些知识点
在ASP.NET Core中,当一个HTTP请求到达服务器时,它会被分配给线程池中的一个线程来处理.该线程会执行相应的Controller方法. 如果这个方法是一个异步方法并且使用了await关键字, ...
- MySQL系列之主从复制基础——企业高可用性标准、主从复制简介、主从复制前提(搭建主从的过程)、主从复制搭建、主从复制的原理、主从故障监控\分析\处理、主从延时监控及原因
文章目录 0.企业高可用性标准 *** 0.1 全年无故障率(非计划内故障停机) 0.2 高可用架构方案 1. 主从复制简介 ** 2. 主从复制前提(搭建主从的过程) *** 3. 主从复制搭建(C ...
- Go 项目代码布局
Go 项目代码布局 目录 Go 项目代码布局 一.Go 语言"创世项目"结构 1.1 src 目录结构三个特点 二.Go 项目布局演进 2.1 演进一:Go 1.4 版本删除 pk ...
- FFMPEG+SDL简单视频播放器——视频快进
之前写过一篇关于视频播放器的文章.播放器只简单实现了视频播放的功能,在此功能的基础上,给它加上一个视频快进的功能. 实现 添加参数 // video play control bool do_seek ...
- math库常用函数+产生随机数总结
math库常用函数+产生随机数总结 1.对x开平方 double sqrt(x)://返回值为double类型,输入的x类型随意,只要是数的类型 2.求常数e的x次方 double exp(x);// ...