写了main函数但是提示无定义

dixiaokui3689 2017-03-08 08:04:52
下面写了main函数但还是提示错误 求教各位大神。。。代码是网上找的拿来研究的。。。
package missi3o2n;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class missi3o2n {
/**
*统计了一个文件夹下面所有txt文件的行数,并查找到了“a”这个词所出现的各个位置
*/
/**
* 项目的目录
*/

String projectName = "E:/";

/**
* 要统计的文件类型
*/
String str[] = new String[]{"txt"};

/**
* 要查找的文字
*/
String find = "a";

List<File> list = new ArrayList<File>();

int linenumber = 0;

FileReader fr = null;
BufferedReader br = null;

public void main(String args[]) {
new missi3o2n().counter(); }


public void counter() {

Date date = new Date();

File file = new File(projectName);
File files[] = null;
files = file.listFiles();

addFile(files);
readLinePerFile();
System.out.println("总行数:" + linenumber + "行");
System.out.println("统计用时:" + (new Date().getTime() - date.getTime()) + "毫秒");
System.out.println("文件数量:" + list.size() + "个");
}

// 将所有符合查找类型的文件都加入到文件列表中
public void addFile(File file[]) {
for (int index = 0; index < file.length; index++) {
if(file[index].isFile()){
String name = file[index].getName().substring(file[index].getName().lastIndexOf(".") + 1);
for(int i = 0; i < str.length; i++){
if(name.equals(str[i])){
list.add(file[index]);
break;
}
}
} else {
addFile(file[index].listFiles());
}
}
}

// 统计文件
public void readLinePerFile() {
try {
for (File s : list) {
int num = 0;
if (s.isDirectory()) {
continue;
}
fr = new FileReader(s);
br = new BufferedReader(fr);
String i = "";
boolean flag = true;
while ((i = br.readLine()) != null) {
num++;

if(find != null && !find.equals("") && i.indexOf(find) != -1){
if(flag){
System.out.println("文件:" + s.getAbsolutePath());
flag = false;
}
System.err.println("查找结果:" + num + "行," + (i.indexOf(find) + 1) + "列");
}
}
if(!flag){
System.out.println();
}
if(find == null || find.equals("")){
System.out.println("文件:" + s.getAbsolutePath());
System.out.println("总行数:" + num + "\n");
}

linenumber += num;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (Exception e) {
}
}
if (fr != null) {
try {
fr.close();
} catch (Exception e) {
}
}
}
}
}
...全文
242 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ryuugu_rena 2017-03-09
  • 打赏
  • 举报
回复
public static void main(String[] args){}
dixiaokui3689 2017-03-09
  • 打赏
  • 举报
回复
引用 9 楼 ch1240249252 的回复:
你的错误是 代码是统计文件夹下的文件,不是统计一个盘下的,你改成我这样的 统计文件夹就好了
谢谢大神!!!!搞定了!!!!比心!!!!
奄灬苟且偷生 2017-03-09
  • 打赏
  • 举报
回复
你的错误是 代码是统计文件夹下的文件,不是统计一个盘下的,你改成我这样的 统计文件夹就好了
奄灬苟且偷生 2017-03-09
  • 打赏
  • 举报
回复
还改了一下地址,因为我E盘东西太多,好慢的说
奄灬苟且偷生 2017-03-09
  • 打赏
  • 举报
回复
楼上说的是对的额 我可以执行
我跟楼上一样进行了更改main,因为执行不了
package bros.provider.corporate.account;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class missi3o2n {
/**
*统计了一个文件夹下面所有txt文件的行数,并查找到了“a”这个词所出现的各个位置
*/
/**
* 项目的目录
*/

String projectName = "D:/anjianjingling/";

/**
* 要统计的文件类型
*/
String str[] = new String[]{"txt"};

/**
* 要查找的文字
*/
String find = "a";

List<File> list = new ArrayList<File>();

int linenumber = 0;

FileReader fr = null;
BufferedReader br = null;

public static void main(String args[]) {
new missi3o2n().counter(); }


public void counter() {

Date date = new Date();

File file = new File(projectName);
File files[] = null;
files = file.listFiles();

addFile(files);
readLinePerFile();
System.out.println("总行数:" + linenumber + "行");
System.out.println("统计用时:" + (new Date().getTime() - date.getTime()) + "毫秒");
System.out.println("文件数量:" + list.size() + "个");
}

// 将所有符合查找类型的文件都加入到文件列表中
public void addFile(File file[]) {
for (int index = 0; index < file.length; index++) {
if(file[index].isFile()){
String name = file[index].getName().substring(file[index].getName().lastIndexOf(".") + 1);
for(int i = 0; i < str.length; i++){
if(name.equals(str[i])){
list.add(file[index]);
break;
}
}
} else {
addFile(file[index].listFiles());
}
}
}

// 统计文件
public void readLinePerFile() {
try {
for (File s : list) {
int num = 0;
if (s.isDirectory()) {
continue;
}
fr = new FileReader(s);
br = new BufferedReader(fr);
String i = "";
boolean flag = true;
while ((i = br.readLine()) != null) {
num++;

if(find != null && !find.equals("") && i.indexOf(find) != -1){
if(flag){
System.out.println("文件:" + s.getAbsolutePath());
flag = false;
}
System.err.println("查找结果:" + num + "行," + (i.indexOf(find) + 1) + "列");
}
}
if(!flag){
System.out.println();
}
if(find == null || find.equals("")){
System.out.println("文件:" + s.getAbsolutePath());
System.out.println("总行数:" + num + "\n");
}

linenumber += num;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (Exception e) {
}
}
if (fr != null) {
try {
fr.close();
} catch (Exception e) {
}
}
}
}
}

dixiaokui3689 2017-03-09
  • 打赏
  • 举报
回复
引用 4 楼 ryuugu_rena 的回复:
public static void main(String[] args){}
39行改成了 public static void main(String args[]) { 还是不行。。。
dixiaokui3689 2017-03-09
  • 打赏
  • 举报
回复
引用 3 楼 qq_34031663 的回复:
counter方法用static修饰或者放在 missi3o2n类的{}内
把39行改成了 public static void main(String args[]) { 还是不行。。。。。
China小嘿 2017-03-08
  • 打赏
  • 举报
回复
counter方法用static修饰或者放在 missi3o2n类的{}内
dixiaokui3689 2017-03-08
  • 打赏
  • 举报
回复
加上了不行。。。报错: Exception in thread "main" java.lang.NullPointerException at missi3o2n.missi3o2n.addFile(missi3o2n.java:58) at missi3o2n.missi3o2n.addFile(missi3o2n.java:68) at missi3o2n.missi3o2n.counter(missi3o2n.java:49) at missi3o2n.missi3o2n.main(missi3o2n.java:38)
wanazi 2017-03-08
  • 打赏
  • 举报
回复
少了一个static?

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧