Java中怎么把文本追加到已经存在的文件
Java中怎么把文本追加到已经存在的文件
我需要重复把文本追加到现有文件中。我应该怎么办?
回答一
你是想实现日志的目的吗?如果是的话,这里有几个库可供选择,最热门的两个就是Log4j 和 Logback了
Java 7+
对于一次性的任务,用FIles类实现很简单
try {Files.write(Paths.get("myfile.txt"), "the text".getBytes(), StandardOpenOption.APPEND);
}catch (IOException e) {//exception handling left as an exercise for the reader
}
注意:上面的代码如果文件不存在,会抛出NoSuchFileException。它也不会自动追加到新一行(像你追加文件的时候经常干的那样)。另一个方法就是传入 CREATE和 APPEND两个参数,如果文件不存在的话就会先创建了。
private void write(final String s) throws IOException {Files.writeString(Path.of(System.getProperty("java.io.tmpdir"), "filename.txt"),s + System.lineSeparator(),CREATE, APPEND);
}
然鹅,如果你想写一个相同的文件多次,上面的代码就会多次打开和关闭磁盘上的文件,那是一个很慢的操作。这种情况下BufferedWriter更加快:
try(FileWriter fw = new FileWriter("myfile.txt", true);BufferedWriter bw = new BufferedWriter(fw);PrintWriter out = new PrintWriter(bw))
{out.println("the text");//more codeout.println("more text");//more code
} catch (IOException e) {//exception handling left as an exercise for the reader
}
Notes:
FileWriter 构造器的第二个参数就是决定是否追加文件,而不是重新写一个文件(如果文件不存在,那会被新建一个)。使用 BufferedWriter 是更为推荐的,比起代价昂贵的writer (例如 FileWriter)。用PrintWriter使得你可以使用 println 语法(可能经常在System.out中使用的)
但是BufferedWriter和PrintWriter包装器不是必须的
Older Java
try {PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("myfile.txt", true)));out.println("the text");out.close();
} catch (IOException e) {//exception handling left as an exercise for the reader
}
异常处理
如果你想要一个鲁棒性很好的异常处理在Java老版本中,那么代码就会变得非常长
FileWriter fw = null;
BufferedWriter bw = null;
PrintWriter out = null;
try {fw = new FileWriter("myfile.txt", true);bw = new BufferedWriter(fw);out = new PrintWriter(bw);out.println("the text");out.close();
} catch (IOException e) {//exception handling left as an exercise for the reader
}
finally {try {if(out != null)out.close();} catch (IOException e) {//exception handling left as an exercise for the reader}try {if(bw != null)bw.close();} catch (IOException e) {//exception handling left as an exercise for the reader}try {if(fw != null)fw.close();} catch (IOException e) {//exception handling left as an exercise for the reader}
}
文章翻译自Stack Overflow:https://stackoverflow.com/questions/1625234/how-to-append-text-to-an-existing-file-in-java
Java中怎么把文本追加到已经存在的文件相关推荐
- Java中基于TCP通过socket嵌套字连接方式传送文件
这里写目录标题 Java中通过socket连接传送文件 前言 socket嵌套字 发送方 接收方 总结 Java中通过socket连接传送文件 前言 在项目的开发中经常遇到需要传送文件的情况,有时候是 ...
- HTML中强制换行和自动换行,网页中的纯文本如何强制换行(txt文件)
有的时候需要把文本文件中的内容显示到网页中,显示效果非常糟糕,比txt文本文件还差,不但没有行间距,连段落也没有了,所有段落被合并成一段,可阅读性变得十分差,可能阅读一会就不想读了.通常的处理方法是把 ...
- 如何在java中去除中文文本的停用词
2019独角兽企业重金招聘Python工程师标准>>> 1. 整体思路 第一步:先将中文文本进行分词,这里使用的HanLP-汉语言处理包进行中文文本分词. 第二步:使用停用词表,去 ...
- 去停用词 java代码_如何在java中去除中文文本的停用词
1. 整体思路 第一步:先将中文文本进行分词,这里使用的HanLP-汉语言处理包进行中文文本分词. 第二步:使用停用词表,去除分好的词中的停用词. 2. 中文文本分词环境配置 使用的HanLP-汉 ...
- JAVA中怎么设置文本域位置_java – 如何在JTextArea中更改文本的位置
通常,在JTextArea中,文本从左上角开始.我希望它在左下角.你怎么能这样做? (如果我的笔迹不可读,请道歉) 解决方法: 您可以将JTextArea锚定到容器的BorderLayout.PAGE ...
- java中如何定位文本框_div定位在文本框下
模板名称: 计费方式: 数量金额 模板类型: 按区域计费全国统一计费 免邮条件: 买${chargeMode}(含)以上免邮, 至的运费: 买${chargeMode}(含)以内, 收邮费元, 每多买 ...
- Java中给txt文本中写入数据
public static void main(String[] args) {//txt文件生成的位置File outFile = new File("D:\\ce\\test.txt&q ...
- 在Java中如何读取用MATLAB的fwrite()函数写入文件的数据
1 问题描述 今天编程的时候遇到一个问题 先前用MATLAB生成了一个数据文件 使用MATLAB的原因是MATLAB能够很快地对算法进行实现 效率较高 但是这个数据文件需要在Android程序中使用 ...
- java html转换mht,在java中,分析如何读取或者解析 MHTML (. mht ) 文件
Prototype'parseMhtToFile'函数 below 从Cognos活动报告'mht'文件中删除html文件和其他工件,但可以根据其他目的定制. 这是用Groovy编写的,需要 Mime ...
最新文章
- linux mysql远程链接_Linux下mysql实现远程连接
- 代码改变世界,这 72 张面孔牛逼了!!!
- 运维开发必会技能之一——虚拟机管理
- lede更改软件源_Linux的上传和下载——Ubuntu中软件的安装和ftp服务器的搭建
- 关于国内部分电子病历编辑器的评价
- http://bbs.winos.cn/viewthread.php?tid=1147extra=page=2
- MUI 列表组件:文字居左中右(排版) - 代码篇
- 计算机数据库系统考研复试面试题,2016年山西财经大学081203计算机应用技术871数据库系统概论复试笔试最后押题五套卷...
- dingtalk 推送手机号信息 golang_Python学习第九十六天:Python调用钉钉机器人推送消息...
- 有观赏性的c语言程序,设计一个C语言程序,对以孩子链表表示的树计算该树的深度- 一起装修网...
- RS编码过程通俗理解
- 基于物联网的智能门锁应用系统设计方案
- 微管理:给你一个技术团队,你该怎么管札记-化繁为简
- BottomNavigationView 动态切换Icon且保留原图颜色
- Heka nginx input
- 嵌入式开发板设置IP
- 【深度强化学习】DRL算法实现pytorch
- mysql主从数据一致性问题及MHA和MGR的架构及底层原理
- 制定新的计划,走起(r13笔记第1天)
- 【前端知识之CSS】CSS3新增特性