public class FolderFileScanContent {
private static ArrayList<Object> scanFiles = new ArrayList<Object>();
public static void scanFileContent(String folderPath,int num) {
File directory = new File(folderPath);
if(!directory.isDirectory()) {
System.out.println("请输入正确的文件夹地址!");
}else {
File[] files = directory.listFiles();
for(int i = 0;i<files.length;i++) {
String path = files[i].getAbsolutePath();
if(!files[i].isDirectory() && path.endsWith("txt")) {
readLineVarFile(path,num);
scanFiles.add(files[i]);
}
}
}
}
//获取文件行数
public static int fileLineNumber(String filePath) {
int lines = 0;
try {
File file = new File(filePath);
if(file.exists()){
long fileLength = file.length();
LineNumberReader lineNumberReader = new LineNumberReader(new FileReader(file));
lineNumberReader.skip(fileLength);
lines = lineNumberReader.getLineNumber();
System.out.println("Total number of lines : " + lines);
lineNumberReader.close();
}else {
System.out.println("File does not exists!");
}
}catch(IOException e) {
e.printStackTrace();
}
return lines;
}
//获取指定行数以后或以前的内容
public static void readLineVarFile(String filePath, int lineNumber ) {
String encode = "GBK";
int totalLines = fileLineNumber(filePath);
ArrayList<String> list = Lists.newArrayList();
BufferedReader breader = null;
String line = null;
try {
breader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath),encode));
line = breader.readLine();
if(lineNumber <= 0 || lineNumber > totalLines) {
System.out.println("超出文本文件范围");
}
if(line != null) {
for(int i = 0 ;i<totalLines;i++) {
if(lineNumber <= i ) {
list.add(line);
}
line = breader.readLine();
}
}
breader.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
System.out.println("数据集合"+list);
}
public static void main(String[] args) {
String folderPath2 = "C:\\Users\\nero\\Desktop\\testfile";
scanFileContent(folderPath2,4);
}
}