JAVA File类执行下面这段程序为什么会出现异常 File file=new File(args[0]); 这句是什么意思??

importjava.io.*;importjava.util.*;publicclassFileClass{/***@paramargs*/publicstaticvo... import java.io.*;
import java.util.*;

public class FileClass {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
File file=new File(args[0]);
System.out.println(args[0]+"文件");
if(file.isFile()){
//是否为文件
System.out.print(file.canRead()?"可读":"不可读");
System.out.print(file.canWrite()?"可写":"不可写");
System.out.print(file.length()+"字节");//注意不能调用数组类型 File[] 的 length()例:File[] files=file.listFiles();不可以这么调用filess.length()
}

else{

//列出所有文件及目录
File[] files=file.listFiles();
ArrayList<File> fileList=new ArrayList<File>();

for(int i=0;i<files.length;i++){
//先列出目录
if(files[i].isDirectory()){
//是否为目录
//取得路径名
System.out.println("路径"+"[ "+files[i].getPath()+" ]");
}
else{
//文件先存入fileList,待会再列出
fileList.add(files[i]);
}
}

//列出文件
for(File f:fileList){
System.out.println(f.toString());
}
System.out.println();
}

}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("using:java FileDemo pathname");

}

}

}
结果:using:java FileDemo pathname
是不是创建的对象所代表的文件没有被创建成功
展开
 我来答
玩者无敌
2011-08-22 · TA获得超过1812个赞
知道小有建树答主
回答量:306
采纳率:0%
帮助的人:444万
展开全部
using:java FileDemo pathname
这句是提示你这个程序的用法:要按照上面的格式运行,就是“java FileDemo 路径参数”的方式。

你在执行java程序时,是可以给main函数指定参数的:
如果这样:Java FileDemo
那么没有任何参数。
如果这样:Java FileDemo p1 p2 p3
这样就指定了三个参数,它们就保存在main函数的参数变量里:String[] args
这是一个字符串数组,args[0]就表示第一个参数“p1”,args[1]就表示第二个参数“p2”,args[2]就表示第三个参数“p3”,

所以如果你不指定任何参数直接执行“Java FileDemo”,这样args这个字符串数组变量是空的,args[0]就会抛异常,程序catch住异常后就会输出“using:java FileDemo pathname”。

正确的用法是要给一个文件路径参数,比如:
java FileDemo C:\Windows\Web
这样用才对。
bdjyw_b
2011-08-21 · TA获得超过256个赞
知道小有建树答主
回答量:112
采纳率:0%
帮助的人:90.3万
展开全部
File file=new File(args[0]); 就是创建一个args[0]所指文件路径的文件对象。你把args[0]作为文件路径,而你运行时又没有指定,当然要出现异常啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
叶之所思
2011-08-22 · TA获得超过101个赞
知道小有建树答主
回答量:73
采纳率:0%
帮助的人:96.7万
展开全部
import java.io.*;
import java.util.*;

public class FileClass {
public static void main(String[] args) {
try {
File file = new File("D:\\A\\");//D盘下的一个A文件夹,这里你也可以写一个文件的路径
//把那个命令行输入参数写死,就不会有错,arg[0]是接受命令行参数的第一个参数
if (file.isFile()) {
System.out.print(file.canRead() ? "可读" : "不可读");
System.out.print(file.canWrite() ? "可写" : "不可写");
System.out.print(file.length() + "字节");// 注意不能调用数组类型 File[] 的
} else {
File[] files = file.listFiles();
ArrayList<File> fileList = new ArrayList<File>();
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
System.out.println("路径" + "[ " + files[i].getPath()
+ " ]");
} else {
fileList.add(files[i]);
}
}
for (File f : fileList) {
System.out.println(f.toString());
}
System.out.println();
}
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("using:java FileDemo pathname");
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
转眯爱j
2011-08-21 · TA获得超过283个赞
知道小有建树答主
回答量:178
采纳率:0%
帮助的人:83.1万
展开全部
arrayList可以用foreach么,要用.size()方法获得数据数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tian36005274
2011-08-23
知道答主
回答量:28
采纳率:0%
帮助的人:14.6万
展开全部
访问数组超边界了啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式