Java-流的简单使用:读取文件、写入文件(面试题:删除注释代码)
2012-09-21 11:21
801 查看
摘要:前天面试Android时遇到机试,题目是删除注释中的代码。机试开始时不能上网,我恰好忘了读写字符流的相关代码API,幸好后来能上网查关于流的API,最终得以把程序写出来。
题目:请编程将Example.c文件中的所有注释删除,将结果写入Example.i文件中。
输入用例Example.c:
我编写的程序:
输出结果:
还有更好的答案吗?望共同探讨。
题目:请编程将Example.c文件中的所有注释删除,将结果写入Example.i文件中。
输入用例Example.c:
struct a { char a /*2392839238923 /*kasdlfjasld*/; char b; //23232392839 }; /* askdashfla' asdfalskdfhlksafdhla fasdjfhalsdjfhlasdf askjdfhlkajds * / */ void Function(int param /*232323* / */) { //*2323234234l int i = 1;//2923939 char str[] = "/*232323"; int j = 0; i = i / j * i; strcpy(str, "/*lakjslkdflksd*/"); }
我编写的程序:
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class Test { public static void main(String args[]) { String InputPath="../Example_1.c"; String OutputPath="../Example_1.i"; String Data=LoadFile(InputPath); Data=Handle(Data); WriteFile(Data,OutputPath); } //把文件中的数据转化为字符串 private static String LoadFile(String path) { File file = new File(path); BufferedReader reader=null; String temp; String result=""; try { reader =new BufferedReader(new FileReader(file)); while((temp=reader.readLine())!=null) { result=result+temp+"\r\n"; } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(result); return result; } //把数据写进文件 private static void WriteFile(String data,String path) { try { FileWriter fw=new FileWriter(path); BufferedWriter bw=new BufferedWriter(fw); bw.write(data); bw.close(); fw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return; } //删掉注释的方法 private static String Handle(String data) { StringBuffer sb= new StringBuffer(); int posStar = 0,posEnd=0,i=0; while(i<data.length()) { System.out.print(data.charAt(i)); if(data.charAt(i)=='"') { do { sb.append(data.charAt(i)); i++; }while(data.charAt(i)!='"'); sb.append(data.charAt(i)); i++; continue; } else if(data.charAt(i)=='/') { if(data.charAt(i+1)=='/') { do { i++; }while(data.charAt(i)!='\r'); sb.append(data.charAt(i)); i++; continue; } else if(data.charAt(i+1)=='*') { do { i++; }while(data.charAt(i)!='*'||((data.charAt(i)=='*')&&(data.charAt(i-1)=='/'))); do { i++; }while(data.charAt(i)!='/'); i++; posStar=i; continue; } } else if(data.charAt(i)=='*') { if(data.charAt(i+1)=='/') { posEnd=i; i=i+2; System.out.println(posStar+" "+posEnd+" "+sb.length()); sb.delete(sb.length()-(posEnd-posStar), sb.length()); continue; } else { while(data.charAt(i+1)==' ') { sb.append(data.charAt(i)); i++; } if(data.charAt(i+1)=='/') { posEnd=i; i=i+2; sb.delete(sb.length()-(posEnd-posStar), sb.length()); continue; } else{ continue; } } } sb.append(data.charAt(i)); i++; } return new String(sb); } }
输出结果:
struct a { char a ; char b; }; void Function(int param ) { int i = 1; char str[] = "/*232323"; int j = 0; i = i / j * i; strcpy(str, "/*lakjslkdflksd*/"); }
还有更好的答案吗?望共同探讨。
相关文章推荐
- Java-流的简单使用:读取文件、写入文件(面试题:删除注释代码)
- java读取文件和写入文件的简单代码
- java文件之写入,读取,全部删除,获取过滤or获取特定字符串,删除特定字符串方法集合
- {@link}与@see的简单使用以及区别--如何写好Java代码注释。
- 如何使用JavaExcel(jxl)读取一个文件并写入一个新文件
- java关于读取数据后简单写入一个文件中的总结
- Java读取文件的简单代码
- 使用Java读取xlxs文件和写入txt文件,并将数据写入到本地文件
- Java底层代码实现多文件读取和写入
- C#使用读写锁三行代码简单解决多线程并发写入文件时线程同步的问题
- java IO流处理实战;完成文件读取和写入,使用到BufferedReader 、PrintStream等
- Java读取文件内容并输出的最简单的方式之一(只需三行代码)
- java IO 使用Properties设置键值对配置信息 写入文件和从文件中读取
- java中如何递归删除文件和文件夹(最简单的代码)
- 引自MagicLinux的C代码简单配置文件读取功能(使用需修改)
- Java IO 读取/写入文件 中文乱码困难解决代码
- java file to inputstream以及New Document From InputStream读取和写入文件操作实例代码
- 【java IO】使用Java输入输出流 读取txt文件内数据,进行拼接后写入到另一个文件中
- Java读取文件的简单代码
- java文件创建、删除、读取、写入操作大全