黑马程序员技术交流社区
标题: 毕老师第24天网络编程02的一个疑问!求解答 [打印本页]
作者: joe520kay 时间: 2015-8-14 16:19
标题: 毕老师第24天网络编程02的一个疑问!求解答
- class PictClient {
- public static void main(String[] args) throws Exception {
-
- if(args.length!=1){
- System.out.println("请选择一个jpg格式的图片");
- return;
- }
-
- File file = new File(args[0]);
- if(!(file.exists() && file.isFile())){
- System.out.println("该文件有问题,要么不存在,要么不是文件");
- return;
- }
-
- if(!file.getName().endsWith(".jpg")){
- System.out.println("图片格式错误,请重新选择");
- return;
- }
-
- if(file.length()>1024*1024*5){
- System.out.println("文件过大,请重新选择!");
- return;
- }
-
-
- Socket s = new Socket("192.168.1.254", 10001);
- FileInputStream fis = new FileInputStream(file);
- OutputStream out = s.getOutputStream();
- byte[] buf = new byte[1024];
- int len = 0;
- while ((len = fis.read(buf)) != -1) {
- out.write(buf, 0, len);
- }
- // 告诉服务端数据已写完
- s.shutdownOutput();
- InputStream in = s.getInputStream();
- byte[] bufIn = new byte[1024];
- int num = in.read(bufIn);
- System.out.println(new String(bufIn, 0, num));
- fis.close();
- s.close();
- }
- }
复制代码 这是老师写的用于多用户上传图片的客户端。
我的疑问是
File file = new File(args[0]); 为什么可以用主函数的数组做文件?
if(args.length!=1){
System.out.println("请选择一个jpg格式的图片");
return;
}
这个判断是什么意思?为什么长度不等于1的时候就return?
希望懂的同学可以帮我解决,不胜感激!
作者: 川晶 时间: 2015-8-14 17:33
我也是昨天才看到这,我是这样理解的:1、客户端在运行时必须指定要上传一个图片,所以运行客户端时要指定一个图片的路径,而这个图片的路径是通过Dos命令的形式传入到主函数的数组中,也就是说:通过命令把图片路径(也就是字符串)传到了主函数的形参数组中,作为主函数形参字符串数组中的一个元素存在,当主函数运行时接受到了这个参数(也就是路径),所以就根据这个路径找到了这个图片;2、需求是这个客户端软件运行时必须制定一个图片路径,那么主函数的形参数组里面就肯定会有一个路径元素,该元素就是用户制定的图片路径,而且只能上传一个图片,所以一次就只能指定一个路径,但长度等于1时,说明用户传了一个字符串路径,如果不等于1就说明用户没有指定路径或者指定了多个路径,这是程序就要停止。我是这样理解的。
作者: pengbeilin 时间: 2015-8-14 18:09
本帖最后由 pengbeilin 于 2015-8-14 18:22 编辑
先把你的两个问题回答一下!
1.为什么可以用主函数的数组做文件?
主函数的数组是接收你在dos命令行里的字符串,就是你在编译文件的时候
输入 javac demo01.java 然后不是回车 而是接着输入字符串(可以输入多个,用空格隔开) 这个字符串就会被赋给主函数里的那个String类型的agrs[ ]数组!在这个程序里就是这样子把照片的路径输进去 比如是demo.jpg,然后通过获取agrs数组的值,就只要把agrs[0]的值赋给file(就像这样: File file = new File(args[0]);)
2.看了我上面的解释,第二个问题就不是问题了,如果agrs为0 就是你在编译的时候 没有往命令行上输入照片路径的字符串,agrs里面就什么都没有,也就表示你没有选择照片!!
大概就这样子吧!还有哪里不懂吗?
作者: pengbeilin 时间: 2015-8-14 18:16
补个图应该会好点
-
QQ截图20150814181357.png
(54.91 KB, 下载次数: 31)
差不多就这样子吧
作者: ℃葫芦 时间: 2015-8-14 18:45
还没学到这里。不知道能不能赶上76期
作者: wang949055945 时间: 2015-8-14 21:07
回复一下
作者: 要踏实小伙子 时间: 2015-8-14 21:10
友好的帮你顶贴哦
作者: Sinyuyu 时间: 2015-8-14 21:11
帮你顶下吧
作者: 蓬头小道士 时间: 2015-8-14 22:20
本帖最后由 蓬头小道士 于 2015-8-14 22:23 编辑
1、因为你这个文件是不确定的,是在程序执行时才给出的文件地址。
2、如果args的长度为1时,也就是一个字符,就不是图片文件名称的长度
作者: 木石不是牧师 时间: 2015-8-14 22:39
签到签到
作者: 流水王朝 时间: 2015-8-14 22:51
签到签到
作者: leiyingyin 时间: 2015-8-14 22:53
友情顶贴
作者: joe520kay 时间: 2015-8-15 18:49
懂了懂了!非常感谢
作者: joe520kay 时间: 2015-8-15 18:50
懂了懂了!谢谢哦!因为我用的是苹果电脑 所以平时都没有用dos来执行 所以就不太懂这个操作
作者: 陈cc 时间: 2015-8-15 19:04
!!!!!!!!!
作者: 18734903493 时间: 2015-8-15 19:15
前来学习!
作者: ooyeah 时间: 2015-8-15 20:45
!!!!!!!!!
作者: Marx_D 时间: 2015-8-15 20:55
haimeixuedao ?
作者: 永远的EOF 时间: 2015-8-15 21:49
其实我看到这个也是疑问很多。
作者: wangchao1992 时间: 2015-8-15 21:56
顶一个。。。
作者: 时光海苔丶 时间: 2015-8-15 22:30
真的有黑马币?
作者: keviner 时间: 2015-8-15 23:34
受教了
作者: 樱花飘过 时间: 2015-8-15 23:54
虽然我没看懂,但是感觉好厉害的样子..................
作者: 巧克黑力 时间: 2015-8-16 00:06
有点没看懂的说
作者: 求学之路 时间: 2015-8-16 00:19
顶一下,顶顶顶
作者: 段山虎 时间: 2015-8-16 04:26
黑马就是不一样,越办越好
作者: 金牛男人 时间: 2015-8-16 09:17
帮你顶一下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |