回 帖 发 新 帖 刷新版面

主题:[讨论]io问题

/**
 * 
 */
package com.file.cb;
import java.io.*;

class Demo {

    /**
     * @param args
     */
    
    public  Demo(){
        
    }

    public static void main(String[] args) {
        // TODO 自动生成方法存根
        
        File myfile = new File("/test.txt");
        if(args.length==0)
        {
            System.out.println("运行该程序时,输入以下格式的命令:");
            System.out.println("Java FileTest<文件名>");
            return;
        }
        String filename = args[0];
        
        System.out.println("文件或目录是否存在:"+myfile.exists());
        System.out.println("是文件吗:"+myfile.isFile());
        System.out.println("是目录吗:"+myfile.isDirectory());
        System.out.println("名称:"+myfile.getName());
        System.out.println("路径:"+myfile.getPath());
        System.out.println("最后更新时间:" + myfile.lastModified()); 
        System.out.println("文件大小:"+myfile.length()+"字节");

    }

}
为什么我的args.length==0会return
我试过把return注释掉```运行到String filename = args[0];显示
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at com.file.cb.Demo.main(Demo.java:27)错误信息
希望高手出来帮帮忙``谢谢了

回复列表 (共7个回复)

沙发

你需要传控制台参数给程序啊,否则,args.length就会等于0
比如你这么运行程序:
java Demo
那么自然args.length == 0
如果这么输入
java Demo /home/file
那么你的filename 就会被赋值为/home/file
如果那里没有return ,然而你又没有传控制台参数,那么自然数组要越界的,因为此时args[0]不存在,args是个空数组

板凳

System.out.println("Java FileTest<文件名>");
是不是在这个out里面文件的名字?我试试````

3 楼

不对``看来我理解错误了```我试过```在控制台里面没办法输入任何参数- -#`还是不行```不过还是谢谢你

4 楼

啊 怎么会呢?
比如你是linux 运行Demo
那么[abcd@efgh ~]$ java Demo file1
那么这个file1就是传给控制台的参数,在你用这个命令的时候就要写好
如果是windows也一样

C:\>java Demo file1
如果你只是:
C:\>java Demo
那么开始执行后自然不能传参数了

5 楼

你用的是IDE还是命令行啊?
IDE的话可能情况不同点,不过也应该有控制台的

6 楼

谢谢你了```我的问题解决了````说来说去是自己的文件名给错了``没传给args```弄的那么的郁闷~~~ - -#

7 楼

传参数时用java Demo nihao
就把nihao传到args[0]了nihao 可换为其他字符串,
就不会出现下标越界了,你肯定是没穿参数。并且把return注释才出现越界的。

我来回复

您尚未登录,请登录后再回复。点此登录或注册