import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class PVFile {
private static PVFile instance;
//
public static PVFile getInstance(){
if(instance==null)
instance=new PVFile();
return instance;
}
public PVFile(){
}
/**
* 得到path目录及子目录下的所有文件
* @param path
* @return
*/
public List<String> getSubFile(String path){
List<String> list = new LinkedList<String>();
List<String>ls = getDir(path);
if(ls.size()>0){
Iterator<String>it =ls.iterator();
while(it.hasNext()){
String curpath=path+File.separator+it.next();
List<String> sublist = getSubFile(curpath);
list.addAll(sublist);
}
}else{
ls = getFiles(path);
if(ls.size()>0){
Iterator<String> it = ls.iterator();
while(it.hasNext()){
String fileName = path + File.separator + it.next();
list.add(fileName);
}
}
}
return list;
}
/**
* 得到path的子目录
* @param path
* @return
*/
public List<String> getDir(String path){
List<String>list = getFileByType(path, 1);
return list;
}
/**
* 得到path目录下的所有文件列表
* @param path
* @return
*/
public List<String> getFiles(String path){
List<String>list = getFileByType(path, 2);
return list;
}
/**
* 得到path下的目录或文件
* @param path
* @param type 类型 1目录 2文件
* @return
*/
private List<String> getFileByType(String path ,int type)
{
List<String>list = new LinkedList<String>();
List<String>ls = getLs(path);
if(ls.size()>0){
Iterator<String> it = ls.iterator();
while(it.hasNext()){
String filename = it.next();
File f = new File(path,filename);
if(type==1 && f.isDirectory()) //取目录
list.add(filename);
else if(type==2 && f.isFile()) //取文件
list.add(filename);
}
}
return list;
}
private List<String> getLs(String path){
List<String>list = new LinkedList<String>();
File dir = new File(path);
if(dir.isDirectory()){
String[] fileNames = dir.list();
for(int i=0; i<fileNames.length;i++)
{
list.add(fileNames[i]);
}
}
return list;
}
/**
* 将一句话写入文件
* @param filename
* @param line
* @throws IOException
*/
public void writeRec(String filename,String line) throws IOException
{
File output=new File(filename);
if (!output.exists()) {
output.createNewFile();
}
RandomAccessFile raf = new RandomAccessFile(output, "rw");
FileChannel fc = raf.getChannel();
FileLock fl = fc.tryLock();
if (fl.isValid()) {
raf.seek(0);
raf.writeBytes(String.valueOf(line));
fl.release();
}
raf.close();
}
/**
* 读取文件内容
* @param filename
* @return
*/
public String read(String filename)
{
String line="";
try{
File input=new File(filename);
if (!input.exists()) {
input.createNewFile();
}
InputStreamReader read = new InputStreamReader(new FileInputStream(input),"GBK");
BufferedReader reader=new BufferedReader(read);
line=reader.readLine();
reader.close();
}catch (Exception e) {
e.printStackTrace();
}
return line;
}
/**
* 以列表的方式返回文件内容
* @param file
* @return
*/
public List<String> parseFile(String file){
List<String>list = new LinkedList<String>();
try{
File input=new File(file);
InputStreamReader read = new InputStreamReader(new FileInputStream(input),"utf-8");
BufferedReader reader=new BufferedReader(read);
String line=null;
while((line=reader.readLine())!=null)
{
list.add(line);
}
reader.close();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return list;
}
}
java文件操作类 可以获取子目录和文件列表和文件内容
最新推荐文章于 2023-05-11 16:42:28 发布