我试图从java文件中获取代码行数。但是我在计算它们时遇到了麻烦。
首先我尝试用ifs跳过它们,但我的想法不起作用。现在我用注释计算相同的行,我的Java文件有这个标题。任何想法,我都被困在如何计算它们。
我的if是用于获取带有注释块的行数。我试图减去。
/*
example
example
*/
int totalLoc = 0;
int difference = 0;
while((line =buff.readLine()) !=null){
if((line.trim().length() !=0 &&(!line.contains("/*") ||!line.contains("*/")) )){
if(line.startsWith("/*")){
difference++;
}else if(linea.startsWith("*/")){
difference++;
}else{
difference++;
}
}
}
答案 0 :(得分:2)
如果你想在任何文件中计算行写下方法并将fileName作为输入传递给下面的方法,它将返回计数。
public int count(String filename) throws IOException
{
InputStream is = new BufferedInputStream(new FileInputStream(filename));
try
{
byte[] c = new byte[1024];
int count = 0;
int readChars = 0;
boolean empty = true;
while ((readChars = is.read(c)) != -1)
{
empty = false;
for (int i = 0; i < readChars; ++i)
{
if (c[i] == '\n')
++count;
}
}
return (count == 0 && !empty) ? 1 : count;
}
finally
{
is.close();
}
}
答案 1 :(得分:1)
在下面的代码中尝试解决方案,它将打印所有多行注释以及文件中找到的多行注释的总行。
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class LinesOfCode {
public static void main(String[] args) {
try {
String s = readFile("D:\\src\\SampleClass.java");
Pattern p = Pattern.compile("/\\*[\\s\\S]*?\\*/");
Matcher m = p.matcher(s);
int total = 0;
while (m.find()) {
String lines[] = m.group(0).split("\n");
for (String string : lines) {
System.out.println(string);
total++;
}
}
System.out.println("Total line for comments = " + total);
} catch (Exception e) {
e.printStackTrace();
}
}
private static String readFile(String path) throws IOException {
FileInputStream stream = new FileInputStream(new File(path));
try {
FileChannel fc = stream.getChannel();
MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0,
fc.size());
/* Instead of using default, pass in a decoder. */
return Charset.defaultCharset().decode(bb).toString();
} finally {
stream.close();
}
}
}
答案 2 :(得分:0)
http://ostermiller.org/findcomment.html 看看这个链接它会帮助你更多。 并通过使用此表达式=&gt; (/ *([^ ] | [\ r \ n]的|(* +([^ /] | [\ r \ n]的))) * + /)|(/ /.) 你可以统计单行和多行的评论!!