java读文件几种方式_Java读取文件的几种方式

import java.io.*;

public class ReadFromFile {

/**

* 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。

*/

public static void readFileByBytes(String fileName) {

File file = new File(fileName);

InputStream in = null;

try {

System.out.println("以字节为单位读取文件内容,一次读一个字节:");

// 一次读一个字节

in = new FileInputStream(file);

int tempbyte;

while ((tempbyte = in.read()) != -1) {

System.out.write(tempbyte);

}

in.close();

} catch (IOException e) {

e.printStackTrace();

return;

}

try {

System.out.println("以字节为单位读取文件内容,一次读多个字节:");

// 一次读多个字节

byte[] tempbytes = new byte[100];

int byteread = 0;

in = new FileInputStream(fileName);

ReadFromFile.showAvailableBytes(in);

// 读入多个字节到字节数组中,byteread为一次读入的字节数

while ((byteread = in.read(tempbytes)) != -1) {

System.out.write(tempbytes, 0, byteread);

}

} catch (Exception e1) {

e1.printStackTrace();

} finally {

if (in != null) {

try {

in.close();

} catch (IOException e1) {

}

}

}

}

/**

* 以字符为单位读取文件,常用于读文本,数字等类型的文件

*/

public static void readFileByChars(String fileName) {

File file = new File(fileName);

Reader reader = null;

try {

System.out.println("以字符为单位读取文件内容,一次读一个字节:");

// 一次读一个字符

reader = new InputStreamReader(new FileInputStream(file));

int tempchar;

while ((tempchar = reader.read()) != -1) {

// 对于windows下,\r\n这两个字符在一起时,表示一个换行。

// 但如果这两个字符分开显示时,会换两次行。

// 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。

if (((char) tempchar) != '\r') {

System.out.print((char) tempchar);

}

}

reader.close();

} catch (Exception e) {

e.printStackTrace();

}

try {

System.out.println("以字符为单位读取文件内容,一次读多个字节:");

// 一次读多个字符

char[] tempchars = new char[30];

int charread = 0;

reader = new InputStreamReader(new FileInputStream(fileName));

// 读入多个字符到字符数组中,charread为一次读取字符数

while ((charread = reader.read(tempchars)) != -1) {

// 同样屏蔽掉\r不显示

if ((charread == tempchars.length)

&& (tempchars[tempchars.length - 1] != '\r')) {

System.out.print(tempchars);

} else {

for (int i = 0; i < charread; i++) {

if (tempchars[i] == '\r') {

continue;

} else {

System.out.print(tempchars[i]);

}

}

}

}

} catch (Exception e1) {

e1.printStackTrace();

} finally {

if (reader != null) {

try {

reader.close();

} catch (IOException e1) {

}

}

}

}

/**

* 以行为单位读取文件,常用于读面向行的格式化文件

*/

public static void readFileByLines(String fileName) {

File file = new File(fileName);

BufferedReader reader = null;

try {

System.out.println("以行为单位读取文件内容,一次读一整行:");

reader = new BufferedReader(new FileReader(file));

String tempString = null;

int line = 1;

// 一次读入一行,直到读入null为文件结束

while ((tempString = reader.readLine()) != null) {

// 显示行号

System.out.println("line " + line + ": " + tempString);

line++;

}

reader.close();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (reader != null) {

try {

reader.close();

} catch (IOException e1) {

}

}

}

}

/**

* 随机读取文件内容

*/

public static void readFileByRandomAccess(String fileName) {

RandomAccessFile randomFile = null;

try {

System.out.println("随机读取一段文件内容:");

// 打开一个随机访问文件流,按只读方式

randomFile = new RandomAccessFile(fileName, "r");

// 文件长度,字节数

long fileLength = randomFile.length();

// 读文件的起始位置

int beginIndex = (fileLength > 4) ? 4 : 0;

// 将读文件的开始位置移到beginIndex位置。

randomFile.seek(beginIndex);

byte[] bytes = new byte[10];

int byteread = 0;

// 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。

// 将一次读取的字节数赋给byteread

while ((byteread = randomFile.read(bytes)) != -1) {

System.out.write(bytes, 0, byteread);

}

} catch (IOException e) {

e.printStackTrace();

} finally {

if (randomFile != null) {

try {

randomFile.close();

} catch (IOException e1) {

}

}

}

}

/**

* 读取文件,以字符串返回

* @param file

* @return

*/

public static String readFile(File file) {

try {

InputStream in = null;

StringBuffer sb = new StringBuffer();

if (file.isFile() && file.exists()) { //判断文件是否存在

// 一次读多个字节

byte[] tempbytes = new byte[1024];

int byteread = 0;

in = new FileInputStream(file);

// 读入多个字节到字节数组中,byteread为一次读入的字节数

while ((byteread = in.read(tempbytes)) != -1) {

// System.out.write(tempbytes, 0, byteread);

String str = new String(tempbytes, 0, byteread);

sb.append(str);

}

} else {

logger.info("找不到指定的文件,请确认文件路径是否正确");

}

return sb.toString();

} catch (FileNotFoundException e) {

e.printStackTrace();

return "";

} catch (IOException e) {

return "";

}

}

/**

* 显示输入流中还剩的字节数

*/

private static void showAvailableBytes(InputStream in) {

try {

System.out.println("当前字节输入流中的字节数为:" + in.available());

} catch (IOException e) {

e.printStackTrace();

}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/412075.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django-视图层

视图函数 视图函数&#xff0c;简称视图&#xff0c;是一个简单的Python 函数&#xff0c;它接受Web请求并且返回Web响应。 无论视图本身包含什么逻辑&#xff0c;都要返回响应 请求对象 urls.py from django.contrib import admin from django.urls import path,re_pathfrom a…

aspnet_UsersInRoles_GetUsersInRoles

ALTERPROCEDUREdbo.aspnet_UsersInRoles_GetUsersInRoles --查询某角色的用户ApplicationNameNVARCHAR(256), RoleNameNVARCHAR(256)ASBEGINDECLAREApplicationIdUNIQUEIDENTIFIERSELECTApplicationIdNULLSELECTApplicationIdApplicationId FROMaspnet_Applications WHERELO…

[vue] 你认为vue的核心是什么?

[vue] 你认为vue的核心是什么&#xff1f; 两部分 一部分 数据->虚拟dom->dom, 另一部分 响应式数据 这两部分大大节省了开发者对数据变动转换到页面显示的操作&#xff0c;可以让开发者聚焦业务&#xff0c;聚焦数据的处理。个人简介 我是歌谣&#xff0c;欢迎和大家一…

java keyadapter_在java中使用keyAdapter和keyEvent时出错

我是编程的初学者&#xff0c;我一直在研究一个小项目&#xff0c;众所周知的叫做Tetris的游戏&#xff0c;我遇到了这个小问题&#xff0c;我希望你能帮助我解。我导入了&#xff1a;import java.awt.event.KeyAdapter和 import java.awt.event.KeyEvent能够使用我的键盘玩游戏…

luogu4365 秘密袭击 (生成函数+线段树合并+拉格朗日插值)

求所有可能联通块的第k大值的和&#xff0c;考虑枚举这个值: $ans\sum\limits_{i1}^{W}{i\sum\limits_{S}{[i是第K大]}}$ 设cnt[i]为连通块中值>i的个数 $ans\sum\limits_{i1}^{W}{i\sum\limits_{S}{[cnt[i]>K]-[cnt[i1]>K]}}$ $ans\sum\limits_{i1}^{W}{\sum\limits_…

学习程序开发的方法,仅供参考吧

感觉很多学习程序开发的新手&#xff0c;方法不对&#xff0c;浪费了大量时间。而j2ee由于技术分支多&#xff0c;学习的人更是找不到主线。其实很多东西&#xff0c;说白了很简单的。 还是那句老话&#xff0c;怕就怕走错路&#xff0c;走对了其实很容易。 j2ee害人的地方就是…

[vue] vue常用的修饰符有哪些?列举并说明

[vue] vue常用的修饰符有哪些&#xff1f;列举并说明 .trim .number .stop .prevent个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

java对象流读取完毕_从Java 8流中获取具有最大频率的对象

我有一个带有city和zip字段的对象,我们称之为Record.public class Record() {private String zip;private String city;//getters and setters}现在,我有一些这些对象的集合,我使用以下代码通过zip对它们进行分组&#xff1a;final Collection records; //populated collection…

Jenkins二 安装gitlab及其使用

git --version 如果没有安装git直接源码安装即可&#xff0c;如果安装了先删除原来的git。 yum -y remove git先安装编译git需要的包。 yum install zlib-devel perl-CPAN gettext curl-devel expat-devel gettext-devel openssl-devel下载&安装 去gitlab官网 https://abou…

编程使用资源文件实现多语言页面(In Action)

需求&#xff1a;我们的ASP.NET站点需要提供多语言支持&#xff0c;考虑到我们使用的是ASP.NET2.0&#xff0c;我们可以利用资源文件来实现。 <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />NOTE:这里我们使用编程的方法实现&a…

[vue] vue怎么获取DOM节点?

[vue] vue怎么获取DOM节点&#xff1f; 1、document.getElementById("id")2、this.$refs.xx还有一些特殊的&#xff0c;比如this.$root、this.$parent、this.$children个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一…

java final内存机制_Java中的内存处理机制和final、static、final static总结

装载自&#xff1a;http://blog.csdn.net/wqthaha/article/details/20923579Java程序运行在JVM上&#xff0c;可以把JVM理解成Java程序和操作系统之间的桥梁&#xff0c;JVM实现了Java的平台无关性&#xff0c;由此可见JVM的重要性。所以在学习Java内存分配原理的时候一定要牢记…

[vue] vue过渡动画实现的方式有哪些?

[vue] vue过渡动画实现的方式有哪些&#xff1f; 1.使用vue的transition标签结合css样式完成动画 2.利用animate.css结合transition实现动画 3.利用 vue中的钩子函数实现动画个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很…

MySQL中的字符集涵义及使用方法总结(二)

五.乱码的避免最好让上述9个字符集变量值保持一致&#xff0c;或者至少“兼容”&#xff0c;同时也要考虑到OS中locale的值。当然&#xff1a;character_set_system例外&#xff0c;它是存储和表示元信息使用的字符集&#xff0c;一般都是ascii串&#xff0c;使用utf8和使用lat…

vim 多行添加注释,取消注释

转发 已经验证 https://blog.csdn.net/SuiXin_123/article/details/81393397转载于:https://www.cnblogs.com/pingg/p/10509301.html

c java c时间格式处理_c:foreach 对时间类型进行格式化

程序(三)Input parameters:Date: 2004/04/01:13:30:00Java format: Thu Apr 01 13:30:00 CST 2004isoDate: 20040531T235959Java format: Mon May 31 23:59:59 CDT 200DatesTag OutputAttribute: value; required. Tag has no body. 注释&#xff1a;value属性 日期对象200…

[vue] vue父子组件双向绑定的方法有哪些?

[vue] vue父子组件双向绑定的方法有哪些&#xff1f; 1.利用对象的引用关系来实现 2.父子组件之间的数据传递 3.使用.sync修饰符个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通…

调用未知DLL中的导出函数

不知道诸位看官是否有过这样的经历&#xff1a;在不经意之间发现一个DLL文件&#xff0c;它里边有不少有趣的导出函数——但是由于你不知道如何调用这些函数&#xff0c;所以只能大发感慨而又无能为力焉。固然有些知名的DLL可以直接通过搜索引擎来找到它的使用方式&#xff08;…

Sqlserver内存管理:限制最大占用内存(转载)

https://blog.csdn.net/donghustone/article/details/83338185?tdsourcetags_pcqq_aiomsg 转载于:https://www.cnblogs.com/wangjunwei/p/10510138.html

批处理 java环境_java环境配置简单批处理方法一键OK

Java编程首要工作就是安装JDK(Java Development Kit)。一通NEXT点完安装包后就是最重要的环境变量设置了。也许有人会问为什么要设置环境变量&#xff0c;要理解这点&#xff0c;首先要明白环境变量的作用。环境变量可以简单的理解为路径导向。例如Windows里面的临时文件夹存放…