在java中读取代码行数,将某一个java项目代码输出到txt文档

 本例子主要是在spring boot中运行的,如果想改成其它的,需要删除logger日志内容。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
/**
 * 统计指定项目的目录下的*.java代码行数
 * @author aflyun
 * @date 2016.02.16
 * @version 1.0
 */
public class JavaTotal {

	public  static Logger logger=LoggerFactory.getLogger(JavaTotal.class);

	//项目java文件所在目录
	public static String javaPath;//目录位置自动获取
	//统计代码行数
	public static Integer countCode = 0;
	
	public static int runJavaTotal(String Url){
		try {
			javaPath=Url;
			File filetxtPath = new File("D:/FileCount.txt");//输出要统计的文件信息
			PrintWriter pw = new PrintWriter(new FileWriter(filetxtPath));
			
			List<File> list = total(javaPath);
			for (File file : list) {
				String javaName = file.getAbsolutePath().replace("\\", "/");
				if(javaName.endsWith(".java")){
					pw.println(javaName);
				}
			}
			pw.println("总共java文件数量 :" + list.size());
			pw.close();
			System.err.println("java文件数量:"+list.size());
			countJavaLine(list);
			System.err.println("java中总代码行数:" + countCode);
			
		} catch (Exception e) {
		}
		
		return countCode;
	}
	/**
	 * 获取所有的文件
	 * @param path 获取文件的路径
	 * @return
	 */
	public static List<File> total(String path){
		List<File> fileList = null;
		try {
			fileList = new ArrayList<File>();
			File filePath = new File(path);
			File[] files = filePath.listFiles();//listFiles能够获取当前文件夹下的所有文件和文件夹
			for (File file : files) {
				if(file.isFile() && file.getName().endsWith(".java")){
					fileList.add(file);
				}else {
					fileList.addAll(fileList.size(), total(file.getPath()));
				}
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
		
		return fileList;
	}
	
	/**
	 * 统计项目中java代码的行数,将文件写入到D盘,用于将代码读取到txt后缀的文件名
	 * @param listFile 文件的集合
	 */
	public static void countJavaLine(List<File> listFile){
		try {

			File filetxtPath = new File("D:/javaWrite.txt");//输出要统计所有代码信息
			PrintWriter pw = new PrintWriter(new FileWriter(filetxtPath));
			for (File file : listFile) {
				if(file.getName().endsWith(".java")){
					FileReader fr = new FileReader(file);
					BufferedReader br = new BufferedReader(fr);
					String line = "";
					while((line = br.readLine()) != null){
						countCode ++;
//						logger.info(line);//将所有代码打印到console
						pw.println(line);
					}
				}
			}
			pw.close();
		} catch (Exception e) {
			System.err.println("统计java代码行数出错!");
		}
		
	}
	
}

在调用时使用:

public String getSum() throws IOException {

        File directory = new File("");//设定为当前文件夹
        System.out.println(directory.getCanonicalPath());//获取标准的路径
        System.out.println(directory.getAbsolutePath());

        logger.info("开始了");
        long start = System.nanoTime();
        runJavaTotal(directory.getCanonicalPath());
        long end = System.nanoTime();
        System.out.print("cost: " + (end - start)/1e9 + " seconds");
        logger.info("完成了");
        return "请在D:/javaWrite.txt进行查看";
    }

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java,要读取Word文档的每一页,可以使用Apache POI库来完成。首先,确保已将POI库添加到Java项目的类路径。 接下来,我们需要创建一个Word文档的输入流,并将其传递给POI库的XSSFWorkbook对象。然后,使用XSSFWorkbook的getNumberOfSheets()方法可以获得文档的页数。 接下来,可以使用XSSFWorkbook的getSheetAt()方法逐个获取每个页的内容。例如,可以使用以下代码获取第一页的内容: ```java FileInputStream fis = new FileInputStream("path/to/word/document.docx"); XSSFWorkbook workbook = new XSSFWorkbook(fis); // 获取文档的页数 int numberOfSheets = workbook.getNumberOfSheets(); // 遍历每一页 for (int i = 0; i < numberOfSheets; i++) { XSSFSheet sheet = workbook.getSheetAt(i); // 处理当前页的内容 // TODO: 在这里编写处理代码 // 获取当前页的行数 int numberOfRows = sheet.getLastRowNum() + 1; // 遍历每一 for (int j = 0; j < numberOfRows; j++) { XSSFRow row = sheet.getRow(j); // 处理当前的内容 // TODO: 在这里编写处理代码 } } // 关闭输入流 fis.close(); ``` 在上述代码,我们使用XSSFWorkbook的getSheetAt()方法来获取每个页的内容,然后使用getLastRowNum()方法获取当前页的行数,再使用getRow()方法遍历每一的内容。 需要注意的是,上述示例代码适用于使用最新的.docx格式的Word文档。如果你想处理旧的.doc格式的Word文档,你需要使用HSSFWorkbook代替XSSFWorkbook,并进相应的更改。 希望这些信息对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值