以字节的方式读取:

            InputStream inputStream = new FileInputStream(file);
int temp = -1;
StringBuilder sb = new StringBuilder();
while((temp = inputStream.read()) != -1){
sb.append((char)temp);
}
inputStream.close();

也可以多个字节一起读取:

            InputStream inputStream = new FileInputStream(file);
byte[] bytes = new byte[10];
StringBuilder sb = new StringBuilder();
int length = -1;
while((length = inputStream.read(bytes))!= -1){
sb.append(new String(bytes,0,length,Charset.forName("utf-8")));
}
inputStream.close();

以字符的方式读取:

            InputStream inputStream = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(inputStream,Charset.forName("utf-8"));
StringBuilder sb = new StringBuilder();
int temp = -1;
while((temp = (isr.read()))!= -1){
sb.append((char)temp);
}
inputStream.close();
isr.close();

或者用封装的BufferedReader按行读取,效率更高:

InputStream inputStream = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(inputStream,Charset.forName("utf-8"));
BufferedReader bufferedReader = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();
String line = null;
while((line = bufferedReader.readLine())!=null){
sb.append(line + '\n');
}
inputStream.close();
isr.close();
bufferedReader.close();

-----------------------------------------------以上是jdk7之前一般使用的读取文件方法-------------------------------------------------------------------------------------------------------

jdk7引入了新的文件api: java.nio.file.Files。 Files.readAllBytes()方法将文件内容全部读入内存,并且确保读取完之后文件是关闭的,也就是说,不用手动调用close方法:

String path = "C:\\test.txt";
System.out.print(Files.readAllBytes(Paths.get(path)));

当文件过大时,不建议使用readAllBytes()方法将文件内容一次全部读入到内存里面。

java8中使用流的方式来读取更高效:

Files.lines(Paths.get(path),StandardCharsets.UTF_8).forEach(System.out::println);

java读取文件(更新jdk7及jdk8)的更多相关文章

  1. [Java]读取文件方法大全(转)

    [Java]读取文件方法大全   1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile {     /**     ...

  2. Java 读取文件的内容

    Java 读取文件的内容 1) CLASS_NAME: 换成自己真实的类名 2) /page/test.json: 换成自己真实的page 3) FileUtils: 来自于org.apache.co ...

  3. Java读取文件-BufferedReader/FileReader/InputStreamReader/FileInputStream的关系和区别

    一.Java读取和存储文件数据流 Java读取文件,实际是将文件中的字节流转换成字符流输出到屏幕的过程   这里面涉及到两个类:InputStreamReader和OutputStreamWriter ...

  4. 使用java读取文件夹中文件的行数

    使用java统计某文件夹下所有文件的行数 经理突然交代一个任务:要求统计某个文件夹下所有文件的行数.在网上查了一个多小时没有解决.后来心里不爽就决定自己写一个java类用来统计文件的行数,于是花了两个 ...

  5. Java读取文件的几种方式

    package com.mesopotamia.test; import java.io.BufferedReader; import java.io.ByteArrayInputStream; im ...

  6. java 读取文件——按照行取出(使用BufferedReader和一次将数据保存到内存两种实现方式)

    1.实现目标 读取文件,将文件中的数据一行行的取出. 2.代码实现 1).方式1: 通过BufferedReader的readLine()方法. /** * 功能:Java读取txt文件的内容 步骤: ...

  7. Java 读取文件到字符串

    Java的io操作比较复杂 package cn.outofmemory.util; import java.io.BufferedReader; import java.io.FileInputSt ...

  8. java读取文件夹下所有文件并替换文件每一行中指定的字符串

    import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.I ...

  9. Java读取文件方法和给文件追加内容

    本文转载自:http://www.cnblogs.com/lovebread/archive/2009/11/23/1609122.html 1.按字节读取文件内容2.按字符读取文件内容3.按行读取文 ...

随机推荐

  1. SAP成都研究院CEC团队三巨头之一:M君的文章预告

    国人总倾向于把特点或者作用类似的人或物放在一起比较并做出排名,于是就有了许多"某某某三巨头"的称谓. 最举世闻名的莫过于二战三巨头:丘吉尔,罗斯福和斯大林. 还有陪伴咱八零后童年时 ...

  2. POJ 2718 Smallest Difference(dfs,剪枝)

    枚举两个排列以及有那些数字,用dfs比较灵活. dfs1是枚举长度短小的那个数字,dfs2会枚举到比较大的数字,然后我们希望低位数字的差尽量大, 后面最优全是0,如果全是0都没有当前ans小的话就剪掉 ...

  3. 【转】iOS 文件下载及断点续传

    ios的下载我们可以使用的方法有:NSData.NSURLConnection.NSURLSession还有第三方框架AFNetworking和ASI 利用NSData方法和NSURLConnecti ...

  4. javaweb基础(25)_jsp标签实例一

    一.简单标签(SimpleTag) 由于传统标签使用三个标签接口来完成不同的功能,显得过于繁琐,不利于标签技术的推广, SUN公司为降低标签技术的学习难度,在JSP 2.0中定义了一个更为简单.便于编 ...

  5. Excel坐标点转线

    IWorkspaceFactory pShpWksFact = new ShapefileWorkspaceFactory(); IFeatureWorkspace pFeatWks; pFeatWk ...

  6. java算法面试题:金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。

    package com.swift; public class RenMingBi { private static final char[] data = new char[]{'零','壹','贰 ...

  7. 你所不知道的js的小知识点(1)

    1.js调试工具 debugger <div class="container"> <h3>debugger语句会产生一个断点,用于调试程序,并没有实际功能 ...

  8. python 使用uuid 出现重复

    同时保存入数据库时候 ,使用  uuid.uuid1() 后出现 重复的 id , 现在  修改为 (uuid.uuid5(uuid.NAMESPACE_DNS, str(uuid.uuid1()) ...

  9. mysql 删除 一天前 创建 的数据,计算时间差

    DELETE from table_name WHERE TIMESTAMPDIFF(SECOND ,CREATE_TIME,now() ) > 24*60*60 https://www.cnb ...

  10. 16.1-Jenkins持续集成01—Jenkins服务搭建和部署

    分类: Linux架构篇   一.介绍Jenkins 1.Jenkins概念 Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台.这是一个免费的源代码,可以处理任何 ...