Java - `File []`没有做我想的

时间:2014-04-01 23:46:25

标签: java arrays

我有2个File[]一个有2个完整文件(temp0temp1),其中一个有2个空(tempOut0tempOut1)。但是,当我尝试查看完整文件是否为空时,它会查看所有文件。

这就是我制作数组的方式:

public msort(File[] tempInPut){
        int length = tempInPut.length;
        this.inPut = new File[length];
        inPut = tempInPut.clone();
        System.err.println("test1 " + Arrays.toString(inPut));
        this.outPut1 = new File[length];


try{

    int i = 0;
    while(i< inPut.length){
    outPut1[i] = new File(temp_dir + "//tempOut" + i + ".txt");
                outPut1[i].createNewFile();
    i++;
    }

这是他们传递给的合并:

public void merge(int outPutNum, File[] inPutArr, File[] outPut1) {
    int index = 0;
    while(index < inPutArr.length - 1) {
        System.err.println("test1 " + Arrays.toString(inPutArr));
        if(inPutArr[index].exists() && inPutArr[index].length() == 0){ return; }
        index++;
    }
}

输出:

  

test1 [/home/tl113/317/temp0.txt,/home/tl113/317/temp1.txt]

     

test1 [/home/tl113/317/tempOut0.txt,/home/tl113/317/tempOut1.txt]

有谁知道为什么File[] outPut1会在File[] inPutArr中结束?

2 个答案:

答案 0 :(得分:1)

  

有谁知道为什么我的File[] outPut1 ends up in my文件[] inPutArr`?

因为当你调用这种方法时它已经存在了,当然。此方法对该参数没有任何作用。

我注意到你明显使用不同的参数调用方法两次。你知道吗?

注意单词是'input'和'output',而不是'inPut'和'outPut'。

答案 1 :(得分:0)

它必须已经存在,因为你什么都不做修改那个数组。该方法只是泄漏数组内容,因此您应该在代码中查看您不想要的内容。

编辑:

您确定要以正确的顺序传递merge方法收到的参数吗? outPutNum在合并时做了什么?