I/O编程软件题(Java语言)

有一个日志文件log.txt,每行一条,前面是固定长度的时间,后面是日志级别和日志内容,如:

20160801 09:40:24 INFO aaaaaaaaaaaa
20160801 09:40:25 WARNING bbbbbbbbbbbbbbbbbbbb
20160801 09:41:10 ERROR cccccccccccc
20160801 09:43:24 INFO ddddddd
20160801 09:45:01 ERROR eeeeeeeeeee

请写段代码把级别为ERROR的行(除去 ERROR)输出到error.txt,如:

20160801 09:41:10 cccccccccccc
20160801 09:45:01 eeeeeeeeeee 

 

这个是一个简单的I/O流对文本的操作,只要熟悉I/O的基本操作应该就可以编写出来。

 

方法一:

1.我首先想到的是使用BufferedReader对log.txt文件进行整行读取,这是我使用BufferedReader最主要的原因;

2.判断是否整行不为空;

3. 使用String类中的indexOf方法若得到"ERROR"首地址位置则进行下面操作 否则退到步骤2 读取下一行;

4.通过BufferedWriter进行对error.txt写操作;

5.使用String类substring方法从包含"ERROR"改行的地址0写到 步骤2所得到的首地址位置      加上    从步骤2得到的首地址位置+5(ERROR5个偏移量)写到尾;

 

代码实现:

 1 import java.io.BufferedReader;
 2 import java.io.BufferedWriter;
 3 import java.io.FileInputStream;
 4 import java.io.FileNotFoundException;
 5 import java.io.FileReader;
 6 import java.io.FileWriter;
 7 import java.io.IOException;
 8 import java.io.PrintWriter;
 9 
10 public class Error {
11 
12     /**
13      * @param args
14      * @throws IOException 
15      */ 
16     public static void main(String[] args)  {
17         // TODO Auto-generated method stub
18         try {
19             BufferedReader br = new BufferedReader(new FileReader("src/Test/log.txt"));
20             BufferedWriter bw = new BufferedWriter(new FileWriter("src/Test/Error.txt"));
21             int startValue = 0;
22             String str = null;
23             while((str = br.readLine()) != null){
24                 if ((startValue = str.indexOf("ERROR")) > 0){
25                     bw.write((str.substring(0, startValue) 
26                         + str.substring(startValue + 5, str.length())));    
27                     bw.newLine();
28                     bw.flush();
29                 }    
30             }
31             br.close();
32             bw.close();
33             
34         } catch (IOException e) {
35             // TODO Auto-generated catch block
36             e.printStackTrace();
37         }
38     }
39 
40 }

 

 

方法二:

 

前面步骤是一样的,从第三部开始变化:

3.使用String类中的contains方法判断是否该行是否包含"ERROE",若包含则进行下面步骤操作否则继续判断;

4.使用replace方法将ERROR替代为空字符;

5.使用BufferedWriter将信息写到error.txt文本中。

 

代码实现:

 1 import java.io.BufferedReader;
 2 import java.io.BufferedWriter;
 3 import java.io.FileInputStream;
 4 import java.io.FileNotFoundException;
 5 import java.io.FileReader;
 6 import java.io.FileWriter;
 7 import java.io.IOException;
 8 import java.io.PrintWriter;
 9 
10 public class Error {
11 
12     /**
13      * @param args
14      * @throws IOException 
15      */ 
16     public static void main(String[] args)  {
17         // TODO Auto-generated method stub
18         try {
19             BufferedReader br = new BufferedReader(new FileReader("src/Test/log.txt"));
20             BufferedWriter bw = new BufferedWriter(new FileWriter("src/Test/Error.txt"));
21             int startValue = 0;
22             String str = null;    
23             while((str = br.readLine()) != null){
24                 if(str.contains("ERROR")){         
25                     str = str.replace(" ERROR", "");
26                     bw.write(str);
27                     bw.newLine();
28                     bw.flush();
29                 }
30             }
31             br.close();
32             bw.close();
33             
34         } catch (IOException e) {
35             // TODO Auto-generated catch block
36             e.printStackTrace();
37         }
38     }
39 
40 }

现在慢慢学会对学习东西进行一些基本的整理,以便它日需要用能够顺手找到,这样也锻炼一下自己的叙说能力,能不能将问题的基本逻辑讲清楚。总之这感觉不错哦。

这个一道XXX公司的一道编程笔试题!去年留下来准备,今年要进行找工作了!用来练练手O(∩_∩)O~

转载于:https://www.cnblogs.com/ZNwithLC/p/7450099.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值