求高手点拨“我的Java代码的错误原因”和我要实现的功能的代码实现方案。

诸位高手,求点拨:
我想用Java实现一个“上传本地文件至服务器”的功能:

上面是代码中的一部分。 上图中的第37行代码,如果将之运行的话,能够得到: 下图的结果:

诸位哥,从这里的输出结果和下文中的api中给出的结果来看:

,应该输出的是一个“字符串类型的数据”在每一行吧...? 所以在图一中,我采取了:“String类型的变量数组”“进行数据的接收”,应该是可以的吧...? 诸位哥,在图1中的错误,是什么“科学原理”...?

为什么下图中的图1中的错误提示:

却又用白纸黑字说明了“类型不匹配”的错误解释....?
我想把找到的结果,用一个数组接下来,然后借助File类的构造方法,将找到的目标,我所采用的“String[] commonFile”字他符串数组进行搜索出的结果的“承接”,再将这里的结果进行“File类型的构造方法的参数填写”,让Socket对象能够借助这里的File类的“准星定位”的功能,通过一个FileOutputStream类的实体的数据传递,将查到的结果,进行“Socket信道的上传”功能的实现。
但是,这里初步的代码书写结果,让我的计划,出现了“搁浅”:
求诸位哥点拨:
弟我的方案,如果不能够通过“上面的一个String数组”进行相应的搜索结果的承接,再将结果借助File类进行Socket对象面向服务器的传递的话,我应该怎么做,能够将我的计划:
将目标用户PC中的数据,传递到我的服务器中,实现? 求诸位高手指点迷津....

看你的代码 ,你的原意是想扫描硬盘中的文件,把所有视频文件的路径保存在一个数组里吧?你这段代码中有几个错误:

    static关键字只能用于定义成员变量或方法中,不能写在方法中。

   2. 之所以提示类型不匹配,是因为你的files1是个File类型的数组,而你在37行声明的commonFile是个字符串数组,而且你在每次遍历的时候都重新声明一个字符串数组了,这样没有意义,应该把声明字符串数组的操作放在前面。

总结一下,我改了一下你的代码,不知是否是你想要的:

final int length = files1 != null ? files1.length : 0;
String[] commonFile = new String[length];
for(int i = 0; i < length; i++) {
    if(files1[i].isDirectory()) {    //你原代码用的是files2,但下面取的值又是files1,不知两者之间有什么区别
        findFile(files1[i]); 
    }
    else if(files1[i].getPath().endWith("3GP") || files1[i].getPath()........) {//太长就不写下去了
        commonFile[i] = files1[i].getPath();
        System.out.println(commonFile[i]);
    }
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-07

没有看到files1的定义,你的files1是File类型的数组吧,直接转换成String是不行的,至于输出的结果,那是应为,在println(),这个会自动的调用本类的toString()方法。

 

至少应该是

String str[i]=files1[i].getPath();

第2个回答  2013-07-07
static 不是静态的意思吗?你把一个变量赋值给静态值。。。把static去了 试试
相似回答