我有2个File[]
一个有2个完整文件(temp0
和temp1
),其中一个有2个空(tempOut0
和tempOut1
)。但是,当我尝试查看完整文件是否为空时,它会查看所有文件。
这就是我制作数组的方式:
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
中结束?
答案 0 :(得分:1)
有谁知道为什么我的
File[]
outPut1ends up in my
文件[] inPutArr`?
因为当你调用这种方法时它已经存在了,当然。此方法对该参数没有任何作用。
我注意到你明显使用不同的参数调用方法两次。你知道吗?
注意单词是'input'和'output',而不是'inPut'和'outPut'。
答案 1 :(得分:0)
它必须已经存在,因为你什么都不做修改那个数组。该方法只是泄漏数组内容,因此您应该在代码中查看您不想要的内容。
编辑:
您确定要以正确的顺序传递merge方法收到的参数吗? outPutNum在合并时做了什么?