java语句从本地磁盘读入栅格文件.tif的图片出错

mochagis 2017-12-23 06:52:29
本人初学java,用java调用geoserver的test服务发布栅格文件
在新建类Userclient中 构造了put请求的方法,doPutFile()。File file作为其中一个参数,如图:

类里面读入文件。

然后再主函数中调用 doPutFile(),并使用File inputfile = new File(D:\。。。)来找到磁盘中文件的位置,如图:

这时候这个函数显示有错,相关信息为:unhandle exception:java.lang.Exception.

注释寻找文件这句语言的时候,可以看到,函数正常,file参数报错:


将我的引用和请求函数放置如下:

import sun.net.www.protocol.http.HttpURLConnection;
import java.io.*;
import java.net.URL;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.io.IOUtils;
import java.lang.*;

 //PUT请求
public int doPutFile(File file,String contentType,String url,String content,String geoUser,String geoPassword ) throws Exception{
int code=0;

String geoCreds = geoUser + ":" +geoPassword; //用户信息
String encodeAuth = new String(Base64.encodeBase64(geoCreds.getBytes())); //base64数据编码用户名及密码
HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection(); //创建httpurlConnection的连接
con.setRequestMethod("PUT"); //请求方法为PUT
con.setRequestProperty("Authorization", "Basic" + encodeAuth); //设置请求属性:添加Authorition验证用户名密码
con.setRequestProperty("User-Agent","Mozilla/5.0"); //设置浏览器类型
con.setRequestProperty("Content-type",contentType ); //数据类型
con.setConnectTimeout(120000);

con.setDoOutput(true);
OutputStream outputStream =con.getOutputStream(); //接收输出流
FileInputStream streamFileInputStream = new FileInputStream(file); //文件输入流
BufferedInputStream streamFileBufferedInputStream = new BufferedInputStream(streamFileInputStream); //缓冲文件输入流 提高文件输入的速度
//设置缓冲 缓冲大小512字节
byte[] streamFileBytes = new byte[512];
int bytesRead = 0;
while ((bytesRead = streamFileBufferedInputStream.read(streamFileBytes)) > 0) {
outputStream.write(streamFileBytes, 0, bytesRead);
}
outputStream.flush(); //清空输出流
code= con.getResponseCode();

try{
InputStream inputStream = con.getInputStream(); //得到输入流
StringWriter writer = new StringWriter();
IOUtils.copy(inputStream,writer,"UTF-8"); //将数据从输入流复制到输出流writer
String theString = writer.toString();
inputStream.close();

System.out.println( theString );

}catch (Exception e){
e.printStackTrace(); //追踪输出至标准错误流
}

con.disconnect(); //httpURLConnection关闭
streamFileBufferedInputStream.close(); //缓冲关闭
return code;
}



还请大佬纠正错误,感激不尽。
...全文
157 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
爱摸鱼de老邪 2017-12-24
  • 打赏
  • 举报
回复
楼主这块代码有需要异常处理的代码: public BufferedInputStream(InputStream in, int size) 创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。创建一个长度为 size 的内部缓冲区数组并将其存储在 buf 中。 参数: in - 底层输入流。 size - 缓冲区大小。 抛出: IllegalArgumentException - 如果 size <= 0 被强制异常处理的代码块,必须进行异常处理,如果你既没有try……catch,也没有抛出,编译器会提示“Unhandled exception type Exception”错误警告。

50,527

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧