能不能直接打开网络上的文件

voodoo_man 2004-08-11 04:37:36
比如在 http://domain/xxx.xxx 的文件
如何直接打开这个文件 我用File 和FileInputStream都扔 filenotfound

我要实现的是一个http协议的文件传输工具, 我想把一个文件输入流和输出流连接 可以么
有什么简单的办法呢

...全文
292 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
flashactionscript 2004-08-13
  • 打赏
  • 举报
回复
不过显示中文还是有问题 我是在dos下 -_!
flashactionscript 2004-08-13
  • 打赏
  • 举报
回复
while( ( tmp = in.read( bytes ) )!= -1 )

里面的bytes 去掉!

import java.lang.*;
import java.io.*;
import java.net.*;
public class MyUrl
{
public static void main(String[] args)
{
byte[] bytes = new byte[ 1024 ];
int tmp = 1;

try{
String chinese = "";
URL object_url = new URL("http://localhost:1500/ddd.txt");
URLConnection object_conn = object_url.openConnection();
InputStream in = object_conn.getInputStream();
while((tmp = in.read())!= -1)
{
chinese = new String( bytes, "GB2312" );
System.out.println((char)tmp);

}
in.close();
}
catch(IOException e)
{
}

}
}

这样没错
voodoo_man 2004-08-12
  • 打赏
  • 举报
回复
up
voodoo_man 2004-08-12
  • 打赏
  • 举报
回复
搞定了, 用的是一次读入一个byte[]的方法,不过还有是两个问题
1.从远程拷贝过来的文件第一个字符是个黑块, 我想这和while(( n = in.read() ) != -1)
有关系,但不知道怎么解决
2.中文的问题,我把byte[]用gb2312重新构造String也不行,只能显示部分中文,后面的是乱码
如何解决?
测试代码如下:
...
FileWriter fw = new FileWriter( "c:\\a.txt" );
byte[] bytes = new byte[ 1024 ];
int tmp = -1;

String chinese = "";

URL object_url = new URL("http://domain/test.txt");
URLConnection object_conn = object_url.openConnection();
InputStream in = object_conn.getInputStream();
while( ( tmp = in.read( bytes ) )!= -1 )
{
chinese = new String( bytes, "GB2312" );
fw.write( chinese );
}
fw.close();
...
D_O_N_G 2004-08-11
  • 打赏
  • 举报
回复
up
tomcatjava 2004-08-11
  • 打赏
  • 举报
回复
可以使用Socket建立HttpURLConnection,然后得到InputStream,就可以读取相应的文件了!
楼主试试。这如同获取网页。
朋友别哭 2004-08-11
  • 打赏
  • 举报
回复
up
voodoo_man 2004-08-11
  • 打赏
  • 举报
回复
很奇怪用这种方法 显示出来的都多了个空格
比如远程文件内容是abcd
显示为a b c d
而且无法处理中文。
Building 2004-08-11
  • 打赏
  • 举报
回复
<%@ page language="java" import="java.io.*" %>
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.net.*" %>
<%
String result = "";
String temp = "";
String object_url_str = "http://www.sina.com.cn"; //目标地址
URL object_url = new URL(object_url_str);
URLConnection object_conn = object_url.openConnection();
HttpURLConnection object_http_conn = (HttpURLConnection)object_conn;
object_http_conn.connect();
BufferedReader br = new BufferedReader(new InputStreamReader(object_conn.getInputStream()));
while((temp = br.readLine())!=null){
result += temp+"\r\n";
}
out.print(result);
%>
voodoo_man 2004-08-11
  • 打赏
  • 举报
回复
那些都是写好的软件阿
平淡真无奇 2004-08-11
  • 打赏
  • 举报
回复
我知道是可以实现的,有的新闻小偷做到了,你找找“新闻小偷”看看。。。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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