使用伪代码 实现 遍历一个目录及其子目录下所有.txt文件,统计每个文件中的单词的个数,出现空格识为一个单词。比如1.txt
txt world1 word2 word1 world2
2.txt
txt world1 word2 word1 world2
则
txt 2
world 4
word2 4
txt world1 word2 word1 world2
2.txt
txt world1 word2 word1 world2
则
txt 2
world 4
word2 4
现在已经把一个目录及其子目录下所有.txt文件 的内容放入数组allcontent中了import java.io.File;
import java.io.*;
class FileManager {
String dir = "";
String temp = "";
public String[] serachFiles(String dir)
{
File root = new File(dir);
File[] filesOrDirs = root.listFiles();
String[] result = new String[filesOrDirs.length]; for (int i = 0; i < filesOrDirs.length; i++)
{
if (filesOrDirs[i].isDirectory())
{
serachFiles(filesOrDirs[i].getAbsolutePath());
} else
{
result[i] = filesOrDirs[i].getName();
String fileName=filesOrDirs[i].getName();
if(fileName.endsWith("txt"))
temp += filesOrDirs[i].getName() + ",,,";
}
}
return temp.split(",,,");
}
public static String getString(String path)
{
String content;
BufferedInputStream reader = null;
try
{
reader = new BufferedInputStream(new FileInputStream(path));
byte[] b = new byte[reader.available()];
reader.read(b);
content = new String(b);
return content;
}
catch (IOException e)
{
e.printStackTrace();
return "";
}
}
public static void main(String[] args) {
FileManager fm = new FileManager();
String[] files = fm.serachFiles("D:/TestDir");
String[] allcontent=new String[files.length];
for (int i = 0; i < files.length; i++) {
allcontent[i]=fm.getString(files[i]).replaceAll("\\d", "");
System.out.println(allcontent[i]);
System.out.println(files[i]);
}
}
}
可以优化的是先把遍历出来的txt文件放在list中,而不是存成一个String再把文件名分隔出来。
最后遍历容器,一个一个的解析单词个数,愚见勿见笑
import java.io.*;
import java.util.*;
class FileManager {
String dir = "";
String temp = "";
public String[] serachFiles(String dir)
{
File root = new File(dir);
File[] filesOrDirs = root.listFiles();
String[] result = new String[filesOrDirs.length]; for (int i = 0; i < filesOrDirs.length; i++)
{
if (filesOrDirs[i].isDirectory())
{
serachFiles(filesOrDirs[i].getAbsolutePath());
} else
{
result[i] = filesOrDirs[i].getAbsolutePath();//+filesOrDirs[i].getName();
String fileName=filesOrDirs[i].getAbsolutePath();//+filesOrDirs[i].getName();
//System.out.println(fileName);
if(fileName.endsWith("txt"))
temp += fileName + ",,,";
}
}
return temp.split(",,,");
}
public static String getString(String path)
{
String content;
BufferedInputStream reader = null;
try
{
reader = new BufferedInputStream(new FileInputStream(path));
byte[] b = new byte[reader.available()];
reader.read(b);
content = new String(b);
return content;
}
catch (IOException e)
{
e.printStackTrace();
System.out.println("KKKK");
return "";
}
}
public static void main(String[] args) {
FileManager fm = new FileManager();
String[] files = fm.serachFiles("D:/TestDir");
String[] allcontent=new String[files.length];
String content="";
for (int i = 0; i < files.length; i++) {
allcontent[i]=fm.getString(files[i]).replaceAll("\\d", "");
content += allcontent[i] + " ";
}
//System.out.println(content);
String[] arrContent =content.split(" ");
List<String> arrContentList = new ArrayList<String>(Arrays.asList(arrContent));
System.out.println(arrContentList.toString());
while(true)
{
Object[] temparr = arrContentList.toArray();
if(temparr.length==0) break;
//System.out.println(temparr.length);
int count=0;
String first ="";
for(int i=0 ;i<arrContentList.size(); i++ )
{
first =(String)temparr[0];
if(arrContentList.indexOf(temparr[0])!=-1)
{
arrContentList.remove(temparr[0]);
count++;
}
}
//System.out.println(arrContentList);
System.out.println(first +" : "+count);
}
}
}
import java.io.*;
import java.util.*;
class FileManager {
String dir = "";
String temp = "";
public String[] serachFiles(String dir)
{
File root = new File(dir);
File[] filesOrDirs = root.listFiles();
String[] result = new String[filesOrDirs.length]; for (int i = 0; i < filesOrDirs.length; i++)
{
if (filesOrDirs[i].isDirectory())
{
serachFiles(filesOrDirs[i].getAbsolutePath());
} else
{
result[i] = filesOrDirs[i].getAbsolutePath();//+filesOrDirs[i].getName();
String fileName=filesOrDirs[i].getAbsolutePath();//+filesOrDirs[i].getName();
//System.out.println(fileName);
if(fileName.endsWith("txt"))
temp += fileName + ",,,";
}
}
return temp.split(",,,");
}
public static String getString(String path)
{
String content;
BufferedInputStream reader = null;
try
{
reader = new BufferedInputStream(new FileInputStream(path));
byte[] b = new byte[reader.available()];
reader.read(b);
content = new String(b);
return content;
}
catch (IOException e)
{
e.printStackTrace();
System.out.println("KKKK");
return "";
}
}
public static void main(String[] args) {
FileManager fm = new FileManager();
String[] files = fm.serachFiles("D:/TestDir");
String[] allcontent=new String[files.length];
String content="";
for (int i = 0; i < files.length; i++) {
allcontent[i]=fm.getString(files[i]).replaceAll("\\d", "");
content += allcontent[i] + " ";
}
//System.out.println(content);
String[] arrContent =content.split(" ");
List<String> arrContentList = new ArrayList<String>(Arrays.asList(arrContent));
System.out.println(arrContentList.toString());
while(true)
{
Object[] temparr = arrContentList.toArray();
if(temparr.length==0) break;
//System.out.println(temparr.length);
int count=0;
String first ="";
for(int i=0 ;i<arrContent.length; i++ )
{
// first =(String)temparr[0];
if(arrContentList.indexOf(temparr[0])!=-1)
{
arrContentList.remove(temparr[0]);
count++;
}
}
// System.out.println(arrContentList);
System.out.println(temparr[0] +" : "+count);
}
}
}
首先得判断File是目录还是文件
在目录下的所有.txt
file.ListFiles(FileFilter filter);
filter过滤出来所有的.txt文件
然后再逐个读取。合并。判断。
然后再读出来。
能不能给个详细点的伪代码啊 不要求实现。