URLConnection类可以获得输出流,所以就想试试向本地文件中写数据,
程序如下:import java.net.*;
import java.io.*;
public class URLConnectionTest
{
public static void main(String args[])
{
try
{
URL url=new URL("file:\\E:\\document\\hello.txt");
URLConnection con=url.openConnection();//返回一个URLConnection对象
con.setDoOutput(true);
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(con.getOutputStream()));
bw.write("asdfadfadfasdfasdf");
bw.newLine();
bw.write("adfasdfasfadfsdf");
bw.newLine();
bw.close();
}
catch(MalformedURLException e)
{
e.printStackTrace();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
程序抛出以下异常:
java.net.UnknownServiceException: protocol doesn't support output
at java.net.URLConnection.getOutputStream(URLConnection.java:792)
at URLConnectionTest.main(URLConnectionTest.java:18)个人觉得是此句代码的问题:URL url=new URL("file:\\E:\\document\\hello.txt");
请高手予以解答,如何通过URL、URLConnection进行文件的写操作??
谢谢了
程序如下:import java.net.*;
import java.io.*;
public class URLConnectionTest
{
public static void main(String args[])
{
try
{
URL url=new URL("file:\\E:\\document\\hello.txt");
URLConnection con=url.openConnection();//返回一个URLConnection对象
con.setDoOutput(true);
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(con.getOutputStream()));
bw.write("asdfadfadfasdfasdf");
bw.newLine();
bw.write("adfasdfasfadfsdf");
bw.newLine();
bw.close();
}
catch(MalformedURLException e)
{
e.printStackTrace();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
程序抛出以下异常:
java.net.UnknownServiceException: protocol doesn't support output
at java.net.URLConnection.getOutputStream(URLConnection.java:792)
at URLConnectionTest.main(URLConnectionTest.java:18)个人觉得是此句代码的问题:URL url=new URL("file:\\E:\\document\\hello.txt");
请高手予以解答,如何通过URL、URLConnection进行文件的写操作??
谢谢了
解决方案 »
- java循环问题
- 一个List怎么样分成多个List,请高手们帮帮忙
- 该死的包的问题(急等好的解答)
- java计算器,高手请进
- 怎么这么难的编程问题!!!!!1
- 请问如何只修改文件中间的一部分内容?(IO写操作)
- 请问,sqlserver中的datetime型怎么取出拼成java.util.date型?
- linux下如何配置环境变量?
- 请问,我用String str2 = new String(rs.getString(2).getBytes("ISO8859_1"),"gb2312");为什么总抱错啊??
- 一个对象可以横跨存储存在eden和survivor区吗
- 帮忙解释下synchronized、wait和notify
- 线程问题
long begintime = System.currentTimeMillis();
URL url = new URL("http://www.yhfund.com.cn");
HttpURLConnection urlcon = (HttpURLConnection)url.openConnection();
urlcon.connect(); //获取连接
InputStream is = urlcon.getInputStream();
BufferedReader buffer = new BufferedReader(new InputStreamReader(is));
StringBuffer bs = new StringBuffer();
String l = null;
while((l=buffer.readLine())!=null){
bs.append(l).append("/n");
}
System.out.println(bs.toString());
//System.out.println(" content-encode:"+urlcon.getContentEncoding());
//System.out.println(" content-length:"+urlcon.getContentLength());
//System.out.println(" content-type:"+urlcon.getContentType());
//System.out.println(" date:"+urlcon.getDate());
System.out.println("总共执行时间为:"+(System.currentTimeMillis()-begintime)+"毫秒");
}catch(IOException e){
System.out.println(e);
}
}
}// 现在通过输出流对象构建对象输出流对象,以实现输出可序列化的对象。
ObjectOutputStream objOutputStrm = new ObjectOutputStream(outStrm); // 向对象输出流写出数据,这些数据将存到内存缓冲区中
objOutputStrm.writeObject(new String("我是测试数据")); // 刷新对象输出流,将任何字节都写入潜在的流中(些处为ObjectOutputStream)
objOutputStm.flush(); // 关闭流对象。此时,不能再向对象输出流写入任何数据,先前写入的数据存在于内存缓冲区中,
// 在调用下边的getInputStream()函数时才把准备好的http请求正式发送到服务器
objOutputStm.close(); // 调用HttpURLConnection连接对象的getInputStream()函数,
// 将内存缓冲区中封装好的完整的HTTP请求电文发送到服务端。
InputStream inStrm = httpConn.getInputStream(); // <===注意,实际发送请求的代码段就在这里 // 上边的httpConn.getInputStream()方法已调用,本次HTTP请求已结束,下边向对象输出流的输出已无意义,
// 既使对象输出流没有调用close()方法,下边的操作也不会向对象输出流写入任何数据.
// 因此,要重新发送数据时需要重新创建连接、重新设参数、重新创建流对象、重新写数据、
// 重新发送数据(至于是否不用重新这些操作需要再研究)
objOutputStm.writeObject(new String(""));
httpConn.getInputStream();
http:\\ 才可以
件URL不支持写吗?
对于file协议,确实不支持获取 OutputStream,只支持获取 InputStream。建议用:
new FileWriter(url.getPath());