搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
凡人多烦事01
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
VMware Fusion 13.5.2 for Mac 发布,产品订阅模式首个重大变更
2
计算机设备库房湿度的标准范围,【仓库温湿度允许范围值应是多少】_各类仓库温湿度标准是多少...
3
详解最新版RabbitMQ 基于RPM 方式的安装
4
GitChat·人工智能 | 肿瘤医疗影像 AI 识别技术实践_图像 病理识别 ai算法
5
Python常用模块 之 logging:日志模块_python中日志模块longging 难不难学(1)_python中的日志
6
【LoRaWan】节点端(一)--SX1278介绍
7
测试基础:测试用例设计方法_硬件测试用例
8
Github优秀开源项目
9
Firebird一款很牛X的数据库
10
chatgpt赋能python:Python代码出错:常见的错误和如何避免它们_用chatgpt写代码被说缩进有问题
当前位置:
article
> 正文
Java 多种文件读写方式_java单独使用文件方式读写文件;
作者:凡人多烦事01 | 2024-06-02 18:50:04
赞
踩
java单独使用文件方式读写文件;
/*
前两天用到读写文件的操作,上网搜了一些这方面的资料。很有用的。
java中多种方式读文件
一、多种方式读文件内容。
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下,rn这两个字符在一起时,表示一个换行。
//
但如果这两个字符分开显示时,会换两次行。
//
因此,屏蔽掉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);
}
}
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/凡人多烦事01/article/detail/663929
推荐阅读
article
【开源】
加油站
管理系统
JAVA
+
Vue
.
js
+
SpringBoot
+MySQL...
Vue
.
js
+
SpringBoot
前后端分离新手入门项目《
加油站
管理系统
》,包括论坛模块、
加油站
模块、汽油模块、加油模块...
赞
踩
article
【
送书
福利
第七期
】
你好
!
Java
(文末
送书
)...
本书以轻松幽默的语言,从零开始介绍如何学习
Java
语言。书名来源于编程语言中最经典的Hello World程序,寓意带您...
赞
踩
article
Android
PackageManagerService
流程
详细分析
(一)之
启动
_
android
...
Android
系统在
启动
的过程中,会
启动
一个应用程序管理服务
PackageManagerService
,这个服务负责扫描...
赞
踩
article
java
-
php
-
python
-
ssm
学习资源下载
管理
计算机
毕业设计
...
springcloud基于springcloud的药品销售系统。springboot基于springboot的音乐网站管...
赞
踩
article
LeetCode
-剑指
Offer
06 - 从尾
到头
打印
链表
-
java
- 细喔...
那么,我们可不可以 在逆序的过程中,计算
链表
的节点个数,从而确定我们需要创建的数组的容量大小。到时候逆序成功,直接for...
赞
踩
article
(C卷
,
100
分)- 5
键
键
盘(
Java
& JS &
Python
)...
(C卷
,
100
分)- 5
键
键
盘(
Java
& JS &
Python
)(C卷
,
100
分)- 5
键
键
盘(
Java
& JS...
赞
踩
article
Java+Selenium+
Chrome
实现后台加载
Echarts
并返回
base64
_
java
ch...
Java+Selenium+
Chrome
实现后台加载
Echarts
并返回
base64
使用场景:在
java
后台加载Echa...
赞
踩
article
HDU 1044 Collect
More
Jewels
【BFS+DFS+建立距离图】_collec...
Collect
More
Jewels
Time Limit: 2000/1000 MS (Java/Others) Me...
赞
踩
article
Sumo
学习
日记 -
day1
从
traci
开始_
sumo
java
...
sumo
最详细教程:通过官方文档带你
学习
sumo
_
sumo
java
sumo
java
...
赞
踩
article
【Py/
Java
/C++三种语言
OD
独家
20
24D
卷真题】
20
天拿下
华为
OD
笔试之【
DFS
/
BFS
】...
现给你一棵树,请计算出
最
富裕
的
小家庭
的
财富和。_寻找
最
富裕
的
小家庭
寻找
最
富裕
的
小家庭
...
赞
踩
article
华为
OD机试C卷
--
绘图
机器
(
Java
& JS &
Python
& C)...
绘图
机器
的
绘图
笔初始位置在原点(0,0)
机器
启动后按照以下规则来进行绘制直线。1. 尝试沿着横线坐标正向绘制直线直到给定...
赞
踩
article
java
+jsp+
mysql
实现学习
资源
推荐
系统
LearningResourceRS
个性化
推荐
系统
...
java
+jsp+
mysql
实现学习
资源
推荐
系统
LearningResourceRS
一、项目简介一、开发工具Myecli...
赞
踩
article
华为
OD机试C卷
--
多段线
数据压缩
(
Java
& JS &
Python
& C)...
为简化处理,多线段的走向只能是水平、竖直、斜向45度。上图中的多线段可以用下面的坐标串表示:(2,8),(3,7),(3...
赞
踩
article
237.【
华为
OD机试】
多段
线
数据压缩
(模拟-
Java
&
Python
&
C++
&JS实现)_
多段
线
数据...
【
华为
OD机试】
多段
线
数据压缩
(模拟-
Java
&
Python
&
C++
&JS实现)为简化处理,
多段
线
的走向只能是水平、竖直...
赞
踩
article
华为
OD机试 - 多段线
数据压缩
(
Java
& JS &
Python
& C &
C++
)_多
线段
...
华为
OD机试 - 多段线
数据压缩
(
Java
& JS &
Python
& C &
C++
),实现:逻辑分析_多
线段
数据...
赞
踩
article
华为
OD机试统一考试D卷C卷 -
多段
线
数据压缩
(C++
Java
Java
Script Pytho...
下图中,每个方块代表一个像素,每个像素用其行号和列号表示。为简化处理,
多段
线的走向只能是水平、竖直、斜向45度。_
华为
o...
赞
踩
article
华为OD机试C卷 -
灰度
图存储(
Java
& JS &
Python
& C & C++)_
org
...
黑白图像常采用
灰度
图的方式存储,即图像的每个像素填充一个灰色阶段值,256阶灰图是一个灰阶值取值范围为 0~255 的灰...
赞
踩
article
华为
OD机试-多段线
数据压缩
(
Java
&
Python
&Js)
100%
通过率_多阶段
数据压缩
pyth...
华为
od机考题目,
100%
通过率_多阶段
数据压缩
python
华为
多阶段
数据压缩
python
华为
...
赞
踩
article
华为OD机试C卷--
灰度
图
存储
(
Java
& JS &
Python
& C)...
黑白
图
像常采用
灰度
图
的方式
存储
,即
图
像的每个像素填充一个灰色阶段值,256阶灰
图
是一个灰阶值取值范围为 0~255 的灰...
赞
踩
article
华为OD机试C卷--一种
字符串
压缩
表示
的
解压
(
Java
& JS &
Python
)...
有一种简易
压缩
算法:针对全部由小写英文字母组成
的
字符串
,将其中连续超过两个相同字母
的
部分
压缩
为连续个数加该字母,其他部分...
赞
踩
相关标签
spring boot
java
vue.js
算法
开发语言
编程著作
android
framework
pkms
包管理服务
启动
php
学习
leetcode
链表
python
c语言
selenium
echarts
ACM
bfs
交通物流
大数据
动态规划