Java学习-014-文本文件写入实例源代码(两种写入方式)

此文源码主要为应用 Java 读取文本文件内容实例的源代码。若有不足之处,敬请大神指正,不胜感激!

第一种:文本文件写入,若文件存在则删除原文件,并重新创建文件。源代码如下所示:

 1     /**
 2      * @function 文本文件操作:写入数据
 3      *
 4      * @author Aaron.ffp
 5      * @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java txtWrite, 2015-2-2 21:03:53 Exp $
 6      *
 7      * @param filename     :文本文件全路径
 8      * @param encoding     :编码格式
 9      * @param fileContent  :写入内容
10      *
11      * @return boolean 写入成功返回true
12      *
13      * @throws IOException
14      */
15     public boolean txtWrite(String filename, String encoding, String fileContent){
16         // 先读取源文件内容, 再进行写入操作
17         boolean flag = false;
18
19         FileInputStream fis = null;
20         InputStreamReader isr = null;
21         BufferedReader br = null;
22         FileOutputStream fos = null;
23         PrintWriter pw = null;
24
25         /* 创建文件(删除旧文件) */
26         if (!this.createFile(filename)) {
27             return flag;
28         }
29
30         try{
31             File file = new File(filename); // 文件路径
32
33             if(file.isFile()){
34                 // 将文件读入输入流
35                 fis = new FileInputStream(file);
36                 isr = new InputStreamReader(fis);
37                 br = new BufferedReader(isr);
38
39                 OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(file), encoding);
40                 BufferedWriter bw = new BufferedWriter(osw);
41                 bw.write(fileContent);
42                 bw.close();
43
44                 flag = true;
45             }else{
46                 this.message = "文件全路径非法。当前文件全路径为:" + filename;
47                 this.logger.warn(this.message);
48             }
49         }catch(Exception ioe){
50             this.message = "写文件{" + filename + "}内容出错。" + ioe.getMessage();
51             this.logger.error(this.message);
52         }finally{
53             try {
54                 if(pw != null){
55                     pw.close();
56                 }
57                 if(fos != null){
58                     fos.close();
59                 }
60                 if(br != null){
61                     br.close();
62                 }
63                 if(fis != null){
64                     fis.close();
65                 }
66             } catch (Exception e) {
67                 this.message = e.getMessage();
68                 this.logger.error(this.message);
69             }
70         }
71
72         return flag;
73     }

文本文件覆盖写入源代码

测试源码如下所示:

 1     /**
 2      * 测试:创建文件-FileUtils.textWrite(String, String, String)
 3      *
 4      * @author Aaron.ffp
 5      * @version V1.0.0: autoUISelenium test.java.aaron.java.tools FileUtilsTest.java test_txtWrite, 2015-2-2 22:09:51 Exp $
 6      */
 7     @Test
 8     public void test_txtWrite() {
 9         this.message = "\n\n\n测试:FileUtils.textWrite(String, String, String)";
10         this.logger.debug(this.message);
11
12         try{
13             this.fu = new FileUtils();
14             this.txtfileWrite = this.constantslist.PARAFILEPATH.get("OUT") + "txtfileWrite.txt"; // 文件名
15             this.message = "写入文件路径为:" + this.txtfileWrite;
16
17             this.fu.createFile(this.txtfileWrite);
18
19             for(int i = 0; i < 10; i++){
20                 this.fu.txtWrite(this.txtfileWrite, "UTF-8", "显示追加的信息:" + i);
21             }
22
23             LinkedList<String> contentlist = this.fu.txtRead(this.txtfileWrite, "UTF-8");
24
25             if(contentlist.size() > 0){
26                 for(int i = 0; i < contentlist.size(); i++){
27                     this.logger.debug(contentlist.get(i));
28                 }
29             }
30         }catch(Exception ioe){
31             this.message = ioe.getMessage();
32             this.logger.error(this.message);
33         }
34     }

测试:文本文件覆盖写入

第二种:文本文件写入,依据用户的提示指令是否删除已存在的原文件。若删除原文件,则同第一种;若不删除原文件,则在原文件末尾追加内容。源代码如下所示:

 1     /**
 2      * @function 文本文件操作:写入数据
 3      *
 4      * @author Aaron.ffp
 5      * @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java txtWrite, 2015-2-2 21:10:53 Exp $
 6      *
 7      * @param filename     :文本文件全路径
 8      * @param delete       : 是否删除旧文件
 9      * @param encoding     :编码格式
10      * @param fileContent  :写入内容
11      *
12      * @return boolean 写入成功返回true
13      *
14      * @throws IOException
15      */
16     public boolean txtWrite(String filename, boolean delete, String encoding, String fileContent){
17         // 先读取源文件内容, 再进行写入操作
18         boolean flag = false;
19         String temp = "";
20         String filecontent = "";
21
22         FileInputStream fis = null;
23         InputStreamReader isr = null;
24         BufferedReader br = null;
25         FileOutputStream fos = null;
26         PrintWriter pw = null;
27
28         /* 文件创建:若删除源文件,则为覆盖写入;若不删除原文件,则为追加写入 */
29         if (!this.createFile(filename, delete)) {
30             return flag;
31         }
32
33         try{
34             File file = new File(filename); // 文件路径
35
36             if(file.isFile()){
37                 // 将文件读入输入流
38                 fis = new FileInputStream(file);
39                 isr = new InputStreamReader(fis);
40                 br = new BufferedReader(isr);
41
42                 // 获取文件原有的内容
43                 for(; (temp = br.readLine()) != null;){
44                     filecontent += temp + this.constantslist.LINESEPARATOR;
45                 }
46
47                 fileContent = filecontent + fileContent;
48
49                 OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(file), encoding);
50                 BufferedWriter bw = new BufferedWriter(osw);
51                 bw.write(fileContent);
52                 bw.close();
53
54                 flag = true;
55             }else{
56                 this.message = "文件全路径非法。当前文件全路径为:" + filename;
57                 this.logger.warn(this.message);
58             }
59         }catch(Exception ioe){
60             this.message = "写文件{" + filename + "}内容出错。" + ioe.getMessage();
61             this.logger.error(this.message);
62         }finally{
63             try {
64                 if(pw != null){
65                     pw.close();
66                 }
67                 if(fos != null){
68                     fos.close();
69                 }
70                 if(br != null){
71                     br.close();
72                 }
73                 if(fis != null){
74                     fis.close();
75                 }
76             } catch (Exception e) {
77                 this.message = e.getMessage();
78                 this.logger.error(this.message);
79             }
80         }
81
82         return flag;
83     }

文本文件写入源代码:

测试源码如下所示:

 1     /**
 2      * 测试:FileUtils.textWrite(String, boolean, String, String)
 3      *
 4      * @author Aaron.ffp
 5      * @version V1.0.0: autoUISelenium test.java.aaron.java.tools FileUtilsTest.java test_txtWriteAppend, 2015-2-2 22:19:51 Exp $
 6      */
 7     @Test
 8     public void test_txtWriteAppend() {
 9         this.message = "\n\n\n测试:FileUtils.textWrite(String, boolean, String, String)";
10         this.logger.debug(this.message);
11
12         try{
13             this.fu = new FileUtils();
14             this.txtfileWrite = this.constantslist.PARAFILEPATH.get("OUT") + "txtfileWrite-append.txt"; // 文件名
15             this.message = "写入文件路径为:" + this.txtfileWrite;
16
17             this.fu.createFile(this.txtfileWrite, false);
18
19             for(int i = 0; i < 10; i++){
20                 this.fu.txtWrite(this.txtfileWrite, false, "UTF-8", "显示追加的信息:" + i);
21             }
22
23             LinkedList<String> contentlist = this.fu.txtRead(this.txtfileWrite, "UTF-8");
24
25             if(contentlist.size() > 0){
26                 for(int i = 0; i < contentlist.size(); i++){
27                     this.logger.debug(contentlist.get(i));
28                 }
29             }
30         }catch(Exception ioe){
31             this.message = ioe.getMessage();
32             this.logger.error(this.message);
33         }
34     }

测试:文本文件写入

至此, Java学习-014-文本文件写入实例源代码(两种写入方式) 顺利完结,希望此文能够给初学 Java 的您一份参考。

最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^

时间: 2024-10-09 21:07:48

Java学习-014-文本文件写入实例源代码(两种写入方式)的相关文章

Java学习-019-Properties 文件读取实例源代码

在这几天的学习过程中,有开发的朋友告知我,每个编程语言基本都有相应的配置文件支持类,像 Python 编程语言中支持的 ini 文件及其对应的配置文件读取类 ConfigParse,通过这个类,用户可以方便的修改 ini 配置文件.在 Java 中对应的配置文件为 properties 格式的文本文件,其对应的内容格式为 “键=值” ,文本注释信息可以用 “#” 注释.同时 Java 语言中对应的类为 Properties(java.util.Properties),即为读取 propertie

Java学习-017-EXCEL 文件读取实例源代码

众所周知,EXCEL 也是软件测试开发过程中,常用的数据文件导入导出时的类型文件之一,此文主要讲述如何通过 EXCEL 文件中 Sheet 的索引(index)或者 Sheet 名称获取文件中对应 Sheet 页中的数据.敬请各位小主参阅,若有不足之处,敬请大神指正,不胜感激! 不多言,小二上码咯... 通过 sheet_index 读取 EXCEL 数据源代码如下所示,敬请参阅! 1 /** 2 * @function 文件读取: EXCEL文件 3 * @description 通过EXCE

Java多线程13:读写锁和两种同步方式的对比

读写锁ReentrantReadWriteLock概述 大型网站中很重要的一块内容就是数据的读写,ReentrantLock虽然具有 完全互斥排他的效果(即同一时间只有一个线程正在执行lock后面的任务),但是效率非常低.所以在JDK中提供了一种读写锁 ReentrantReadWriteLock,使用它可以加快运行效率. 读写锁表示两个锁,一个是读操作相关的锁,称为共享锁:另一个是写操作相关的锁,称为排他锁.我把这两个操作理解为三句话: 1.读和读之间不互斥,因为读操作不会有线程安全问题 2.

RabbitMQ学习第二记:工作队列的两种分发方式,轮询分发(Round-robin)和 公平分发(Fair dispatch)

1.什么是RabbitMQ工作队列 我们在应用程序使用消息系统时,一般情况下生产者往队列里插入数据时速度是比较快的,但是消费者消费数据往往涉及到一些业务逻辑处理导致速度跟不上生产者生产数据.因此如果一个生产者对应一个消费者的话,很容易导致很多消息堆积在队列里.这时,就得使用工作队列了.一个队列有多个消费者同时消费数据. 下图取自于官方网站(RabbitMQ)的工作队列的图例 P:消息的生产者 C1:消息的消费者1 C2:消息的消费者2 红色:队列 生产者将消息发送到队列,多个消费者同时从队列中获

java多线程总结一:线程的两种创建方式及优劣比较

1.通过实现Runnable接口线程创建 (1).定义一个类实现Runnable接口,重写接口中的run()方法.在run()方法中加入具体的任务代码或处理逻辑. (2).创建Runnable接口实现类的对象. (3).创建一个Thread类的对象,需要封装前面Runnable接口实现类的对象.(接口可以实现多继承) (4).调用Thread对象的start()方法,启动线程 示例代码: [java] view plaincopy <span style="font-size:16px;&

java多线程总结一:线程的两种创建方式及比较

1.线程的概念:线程(thread)是指一个任务从头至尾的执行流,线程提供一个运行任务的机制,对于java而言,一个程序中可以并发的执行多个线程,这些线程可以在多处理器系统上同时运行.当程序作为一个应用程序运行时,java解释器为main()方法启动一个线程. 2.并行与并发: (1)并发:在单处理器系统中,多个线程共享CPU时间,而操作系统负责调度及分配资源给它们. (2)并行:在多处理器系统中,多个处理器可以同时运行多个线程,这些线程在同一时间可以同时运行,而不同于并发,只能多个线程共享CP

Java学习-018-EXCEL 文件写入实例源代码

众所周知,EXCEL 也是软件测试开发过程中,常用的数据文件导入导出时的类型文件之一,此文主要讲述如何通过 EXCEL 文件中 Sheet 的索引(index)或者 Sheet 名称获取文件中对应 Sheet 页中的数据.敬请各位小主参阅,若有不足之处,敬请大神指正,不胜感激! 不多言,小二上码咯... 通过 sheet_name 写入 EXCEL 数据源代码如下所示,敬请参阅! 1 /** 2 * @function 文件写入: EXCEL文件 3 * 4 * @author Aaron.ff

Java学习-011-创建文件实例及源代码

此文源码主要为应用 Java 创建文件的源代码.若有不足之处,敬请大神指正,不胜感激! 创建文件的源代码如下所示: 1 /** 2 * @function 文件操作:创建文件.若文件不存在,则直接创建文件:若文件存在且未被占用,则删除文件,并重新创建文件 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java createFile, 2015-2

Java学习-012-文件删除实例及源代码

此文源码主要为应用 Java 创建文件的源代码.若有不足之处,敬请大神指正,不胜感激! 文件删除源代码如下: 1 /** 2 * @function 文件操作:删除文件.若文件存在且未被占用,则删除文件:若文件存在且被占用,则记录文件占用信息:若文件不存在,则对应记录日志信息 3 * 4 * @author Aaron.ffp 5 * @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java deleteF