java读取文件方法大全

2023-11-06

一、多种方式读文件内容。

1、按字节读取文件内容
2、按字符读取文件内容
3、按行读取文件内容
4、随机读取文件内容

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import java.io.Reader;

public class ReadFromFile {
/**
* 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。
*
* @param fileName
* 文件的名
*/
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) {
}
}
}
}

/**
* 以字符为单位读取文件,常用于读文本,数字等类型的文件
*
* @param fileName
* 文件名
*/
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) {
}
}
}
}

/**
* 以行为单位读取文件,常用于读面向行的格式化文件
*
* @param fileName
* 文件名
*/
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) {
}
}
}
}

/**
* 随机读取文件内容
*
* @param fileName
* 文件名
*/
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 in
*/
private static void showAvailableBytes(InputStream in) {
try {
System.out.println("当前字节输入流中的字节数为:" + in.available());
} catch (IOException e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
String fileName = "C:/temp/newTemp.txt";
ReadFromFile.readFileByBytes(fileName);
ReadFromFile.readFileByChars(fileName);
ReadFromFile.readFileByLines(fileName);
ReadFromFile.readFileByRandomAccess(fileName);
}
}



二、将内容追加到文件尾部

import java.io.FileWriter;
import java.io.IOException;
import java.io.RandomAccessFile;

/**
* 将内容追加到文件尾部
*/
public class AppendToFile {

/**
* A方法追加文件:使用RandomAccessFile
* @param fileName 文件名
* @param content 追加的内容
*/
public static void appendMethodA(String fileName, String content) {
try {
// 打开一个随机访问文件流,按读写方式
RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");
// 文件长度,字节数
long fileLength = randomFile.length();
//将写文件指针移到文件尾。
randomFile.seek(fileLength);
randomFile.writeBytes(content);
randomFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}

/**
* B方法追加文件:使用FileWriter
* @param fileName
* @param content
*/
public static void appendMethodB(String fileName, String content) {
try {
//打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
FileWriter writer = new FileWriter(fileName, true);
writer.write(content);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
String fileName = "C:/temp/newTemp.txt";
String content = "new append!";
//按方法A追加文件
AppendToFile.appendMethodA(fileName, content);
AppendToFile.appendMethodA(fileName, "append end. \n");
//显示文件内容
ReadFromFile.readFileByLines(fileName);
//按方法B追加文件
AppendToFile.appendMethodB(fileName, content);
AppendToFile.appendMethodB(fileName, "append end. \n");
//显示文件内容
ReadFromFile.readFileByLines(fileName);
}
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java读取文件方法大全 的相关文章

  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • Android Studio 在编译时未检测到支持库

    由于 Android Studio 将成为 Android 开发的默认 IDE 因此我决定将现有项目迁移到 Android studio 中 项目结构似乎不同 我的项目中的文件夹层次结构如下 Complete Project gt idea
  • java中删除字符串中的特殊字符?

    如何删除字符串中除 之外的特殊字符 现在我用 replaceAll w s 它删除了所有特殊字符 但我想保留 谁能告诉我我该怎么办 Use replaceAll w s 我所做的是将下划线和连字符添加到正则表达式中 我添加了一个 连字符之前
  • HDFS:使用 Java / Scala API 移动多个文件

    我需要使用 Java Scala 程序移动 HDFS 中对应于给定正则表达式的多个文件 例如 我必须移动所有名称为 xml从文件夹a到文件夹b 使用 shell 命令我可以使用以下命令 bin hdfs dfs mv a xml b 我可以
  • 一种使用 Java Robot API 和 Selenium WebDriver by Java 进行文件上传的解决方案

    我看到很多人在使用 Selenium WebDriver 的测试环境中上传文件时遇到问题 我使用 selenium WebDriver 和 java 也遇到了同样的问题 我终于找到了解决方案 所以我将其发布在这里希望对其他人有所帮助 当我需
  • Microsoft Graph 身份验证 - 委派权限

    我可以使用 Microsoft Graph 访问资源无需用户即可访问 https developer microsoft com en us graph docs concepts auth v2 service 但是 此方法不允许我访问需
  • 如何捕获未发送到 stdout 的命令行文本?

    我在项目中使用 LAME 命令行 mp3 编码器 我希望能够看到某人正在使用什么版本 如果我只执行 LAME exe 而不带参数 我会得到 例如 C LAME gt LAME exe LAME 32 bits version 3 98 2
  • Java中接口作为方法参数

    前几天去面试 被问到了这样的问题 问 反转链表 给出以下代码 public class ReverseList interface NodeList int getItem NodeList nextNode void reverse No
  • 如何将文件透明地传输到浏览器?

    受控环境 IE8 IIS 7 ColdFusion 当从 IE 发出指向媒体文件 例如 mp3 mpeg 等 的 GET 请求时 浏览器将启动关联的应用程序 Window Media Player 我猜测 IIS 提供文件的方式允许应用程序
  • Spring Data 与 Spring Data JPA 与 JdbcTemplate

    我有信心Spring Data and Spring Data JPA指的是相同的 但后来我在 youtube 上观看了一个关于他正在使用JdbcTemplate在那篇教程中 所以我在那里感到困惑 我想澄清一下两者之间有什么区别Spring
  • 将 Long 转换为 DateTime 从 C# 日期到 Java 日期

    我一直尝试用Java读取二进制文件 而二进制文件是用C 编写的 其中一些数据包含日期时间数据 当 DateTime 数据写入文件 以二进制形式 时 它使用DateTime ToBinary on C 为了读取 DateTime 数据 它将首
  • 通过 PowerShell 运行 .cmd 文件

    我正在尝试使用 PowerShell 在远程服务器上运行 cmd 文件 在我的 ps1 脚本中我尝试过 C MyDirectory MyCommand cmd 它会导致此错误 C MyDirectory MyCommand cmd is n
  • 从其可执行文件的路径获取服务名称

    我有一个可执行文件的路径 它是一个正在运行的服务应用程序 例如 C Program Files x86 Someapp somesvc exe 我想停止并启动它 为此我想我需要获取服务的名称 如下所示 this https stackove
  • 如何在 Maven 中显示消息

    如何在 Maven 中显示消息 在ant中 我们确实有 echo 来显示消息 但是在maven中 我该怎么做呢 您可以使用 antrun 插件
  • Java - 不要用 bufferedwriter 覆盖

    我有一个程序可以将人员添加到数组列表中 我想做的是将这些人也添加到文本文件中 但程序会覆盖第一行 因此这些人会被删除 如何告诉编译器在下一个空闲行写入 import java io import java util import javax
  • android Accessibility-service 突然停止触发事件

    我有一个 AccessibilityService 工作正常 但由于开发过程中的某些原因它停止工作 我似乎找不到这个原因 请看一下我的代码并告诉我为什么它不起作用 public class MyServicee extends Access
  • 休眠以持久保存日期

    有没有办法告诉 Hibernate java util Date 应该持久保存 我需要这个来解决 MySQL 中缺少的毫秒分辨率问题 您能想到这种方法有什么缺点吗 您可以自己创建字段long 或者使用自定义的UserType 实施后User
  • sqlite3-ruby gem:无法构建 gem 本机扩展

    Update 看看这个后续问题 Windows 上的 Gem 更新 它坏了吗 https stackoverflow com questions 134581 gem update on windows is it broken 在 Win
  • java8 Collectors.toMap() 限制?

    我正在尝试使用java8Collectors toMap on a Stream of ZipEntry 这可能不是最好的想法 因为在处理过程中可能会发生异常 但我想这应该是可能的 我现在收到一个我不明白的编译错误 我猜是类型推理引擎 这是
  • Jackson 将单个项目反序列化到列表中

    我正在尝试使用一项服务 该服务为我提供了一个带有数组字段的实体 id 23233 items name item 1 name item 2 但是 当数组包含单个项目时 将返回该项目本身 而不是包含一个元素的数组 id 43567 item

随机推荐

  • Python 基于pickle的 保存和加载训练后的模型

    pickle允许我们将Python保存为硬盘驱动器上的二进制文件 在pickle我们的对象后 可以结束我们的Python 对话 并在之后将对象在加载到Python中 pickle文件可以备份到云盘或者移动盘里或者拿来想给谁给谁 警告 不要加
  • linux内核的编译和安装

    linux内核的编译和安装 文章目录 linux内核的编译和安装 1 获取内核源码 2 编译源码 3 安装内核 4 reboot 系统加载新的内核 1 获取内核源码 登录Linux内核官方网站 可以获取源代码 使用git获取最新提交到Lin
  • flask虚拟环境搭建及flask基础

    常用端口号 http 80 https 443 ssh 22 远程访问 ftp 21 文件传输mysql 3306 redis 6379 smtp 25 邮件发送服务 pop3 110 邮件接收服务 虚拟环境 pip是python的包管理工
  • BSN-DDC 基础网络关键知识点(一)DDC背景介绍

    id BSN 2021 公众号 BSN研习社 2022年1月25日 区块链服务网络发展联盟 简称 BSN联盟 上线推出了 BSN DDC基础网络 并进入试商用阶段 同时 BSN DDC官网门户 ddc bsnbase com 上线发布 供D
  • Python——人工智能时代的通用语言

    Python对于从事数据分析的专业人士来说 并不陌生 而我正在熟悉Python的道路上 先易后难 快速驶过高速公路后 目前正在泥泞山路上挣扎 期待雨过天晴 顺利跨过瓶颈期 学习Python就像学一门外语 需要了解它的语法 按照既定的规则组词
  • TypeScript语法

    TypeScript基础语法 1 1 js与ts的区别 最大区别 js不会在赋值时检查是否与类型匹配 而ts会检查所赋的值是否与类型匹配 若不匹配则会进行报错提示 1 2 js的数据类型 两大类 1 2 1 原始数据类型 5种 原始数据类型
  • 【NOI2018模拟3.26】Cti

    Description 有一个 n m 的地图 地图上的每一个位置可以是空地 炮塔或是敌人 你需要操纵炮塔消灭敌人 对于每个炮塔都有一个它可以瞄准的方向 你需要在它的瞄准方向上确定一个它的攻击位置 当然也可以不进行攻击 一旦一个位置被攻击
  • SpringBoot集成手机验证码业务(榛子云短信服务)

    一 手机验证码的作用 举个例子 如果你开发了一个系统 那这个系统肯定会有登录功能对吧 那如果说你的密码忘记了呢 这个时候我们的解决方式是 1 联系管理员 2 再注册一个 emmm 那我以前的资料就没了呀 3 对于管理员自己而言 手动修改数据
  • 简单的介绍一下:柔性数组

    对于柔性数组 其实这个是在如今的大学生书本上是很难能找到的 原因在于 笔者现在就是大学生一枚 但是在C语言的书本上没有涉及到柔性数组的部分 经查略资料 我们可以找到 在如今的C语言中 C99规定 结构体中允许最后一个元素是未知大小的数组 这
  • 微信小程序支付后端逻辑

    小程序报名 生成订单 public function make order if IS POST data openid I POST openid data total I POST data total data crsNo W dat
  • SSM小技巧(一)、Controller中互相调用session中存储的内容

    首先 你需要在一个Controller中往session中存内容 取的名字必须含有大写字母 虽然博主也不清楚为什么 如果有知道的人请一定要通知博主 博主将感激不尽 Controller SessionAttributes Save 将Mod
  • LLM微调

    下面我只是分析讲解下这些方法的原理以及具体代码是怎么实现的 不对效果进行评价 毕竟不同任务不同数据集效果差别还是挺大的 文章目录 0 hard prompt soft prompt区别 1 Prefix Tuning 2 Prompt Tu
  • 实例 :教你使用简单神经网络和LSTM进行时间序列预测(附代码)

    翻译 张玲 校对 丁楠雅 本文约1500字 建议阅读5分钟 作者基于波动性标准普尔500数据集和Keras深度学习网络框架 利用python代码演示RNN和LSTM RNN的构建过程 便于你快速搭建时间序列的预测模型 图片来源 Pixaba
  • Gradle是什么

    以下总结作为本人学习笔记使用 Gradle是一个开源的自动构建工具 可以作为android studio工程的依赖管理和打包工具 包括三方库和jar包的依赖和链接 java和res等资源的编译和打包 1 在gradle之前 android的
  • 【JavaScript 编程语言】简介JavaScript 简介,手册规范

    1 1JavaScript 简介 让我们来看看 JavaScript 有什么特别之处 我们可以用它实现什么 以及哪些其他技术可以与其搭配产生奇妙的效果 什么是 JavaScript JavaScript 最初被创建的目的是 使网页更生动 这
  • AI 图片生成3D模型之

    AI 可以通过学习大量的图像数据来生成 3D 模型 这些模型可以用于许多不同的目的 如游戏开发 建筑设计和动画制作 为了生成 3D 模型 AI 系统通常需要输入许多 2D 图像 这些图像可以是从不同角度拍摄的照片或者是从视频中截取的帧 AI
  • mmdetection报错 TypeError: vars() argument must have __dict__ attribute

    下载官方代码 安装好环境后第一个demo就报错 报错1 error the following arguments are required img config checkpoint 添加 报错2 manager pyplot show
  • Spring Secutity oAuth2的学习

    李哥的博客不能看了 写文档又很浪费时间 先投个懒 贴个流程图 想去李哥哪里学习的小伙伴 这里有地址 17 Spring Security oAuth2 创建资源服务器2 哔哩哔哩 bilibili 项目中使用到了Oauth2 然后来李哥这里
  • java实现获取两个list交集,并集,差集

    import java util ArrayList import java util List import static java util stream Collectors toList public class Main publ
  • java读取文件方法大全

    一 多种方式读文件内容 1 按字节读取文件内容 2 按字符读取文件内容 3 按行读取文件内容 4 随机读取文件内容 import java io BufferedReader import java io File import java