zoukankan      html  css  js  c++  java
  • 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~

  • 相关阅读:
    2017年3月10号课堂笔记
    2017年3月8号课堂笔记
    2017年3月6号课堂笔记
    2017年3月3号课堂笔记
    第7讲:设计PE型病毒2
    第6讲:设计PE型病毒1
    第5讲:HOOK 任务管理器 第2种方法注入
    第4讲:HOOK 任务管理器 无法结束进程
    第3讲:导入表的定位和读取操作
    第2讲:搜索PEB结构获取kernel32.dll的基址暴力搜索内存空间获得 Api 的线性地址
  • 原文地址:https://www.cnblogs.com/ZNwithLC/p/7450099.html
Copyright © 2011-2022 走看看