Java:您能解析服务器上的文件吗?

Java:您能解析服务器上的文件吗?,java,client-server,download,Java,Client Server,Download,我一直明白,要在服务器上读取文件,必须先下载文件,即: URL url = new URL(myUrl); connection = (HttpURLConnection) url.openConnection(); connection.connect(); input = connection.getInputStream(); output = new FileOutpu

我一直明白,要在服务器上读取文件,必须先下载文件,即:

  URL url = new URL(myUrl);
              connection = (HttpURLConnection) url.openConnection();
              connection.connect();


              input = connection.getInputStream();
              output = new FileOutputStream(TEMP_FILE_PATH); 

             byte data[] = new byte[4096];
              long total = 0;
              int count;
              while ((count = input.read(data)) != -1) {
                  // allow canceling with back button
                  if (isCancelled()) {
                      input.close();
                      return null;
                  }
                   output.write(data, 0, count);
              }
我的假设不正确吗?你能在不下载的情况下读取/解析文件吗

可以解析服务器上的文件吗

是,如果解析器在服务器上运行。如果您的解析器没有直接访问该文件,那么您必须以某种方式获取该文件以对其进行解析

可以解析服务器上的文件吗

当然可以

根据您的代码片段,您似乎希望从远程服务器或http请求读取和解析文件内容

我有一个应用程序,用户可以从远程文件服务器预览文件

如果您可以直接使用“myUrl”访问文件,那么您还可以用java读取和解析该文件

请尝试使用下面的代码段

您可能需要包括org.apache.http.client.HttpClient

HTTP获取示例

String myUrl = "http://enter.the.url.you.want";
OutputStream output = new FileOutputStream("TEMP_FILE_PATH");

// Define Header information if you want to have.
Map<String, String> headers = new HashMap<String, String>();
headers.put("range", "bytes=0-51199");

// org.apache.http.client.HttpClient
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(myUrl);

if(headers != null){
    Iterator<String> iter = headers.keySet().iterator();
    while(iter.hasNext()){
        String key = (String)iter.next();
        get.addHeader(key, headers.get(key));
    }
}

HttpResponse res = client.execute(get);
InputStream input = res.getEntity().getContent();

int count = 0;
byte[] data = new byte[4096];

StringBuilder sb = new StringBuilder();

while ((count = input.read(data)) != -1) {
    sb.append(new String(data, 0, count, "UTF-8"));
    // Here is the place you can read a file.
    output.write(data);
}

input.close();
output.close();
String myUrl = "http://enter.the.url.you.want";
OutputStream output = new FileOutputStream("TEMP_FILE_PATH");

// Define parameters if you want to have.
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("key", "some-value"));

// Define Header information if you want to have.
Map<String, String> headers = new HashMap<String, String>();
headers.put("range", "bytes=0-51199");

// org.apache.http.client.HttpClient
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(myUrl);
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));

if(headers != null){
    Iterator<String> iter = headers.keySet().iterator();
    while(iter.hasNext()){
        String key = (String)iter.next();
        post.addHeader(key, headers.get(key));
    }
}

HttpResponse res = client.execute(post);
InputStream input = res.getEntity().getContent();

int count = 0;
byte[] data = new byte[4096];

StringBuilder sb = new StringBuilder();

while ((count = input.read(data)) != -1) {
    sb.append(new String(data, 0, count, "UTF-8"));
    // Here is the place you can read a file.
    output.write(data);
}

input.close();
output.close();
String myUrl=”http://enter.the.url.you.want";
OutputStream输出=新文件OutputStream(“临时文件路径”);
//如果您想获得标题信息,请定义标题信息。
Map headers=newhashmap();
headers.put(“范围”,“字节=0-51199”);
//org.apache.http.client.HttpClient
HttpClient=new DefaultHttpClient();
HttpGet=newhttpget(myUrl);
如果(标题!=null){
迭代器iter=headers.keySet().Iterator();
while(iter.hasNext()){
字符串键=(字符串)iter.next();
get.addHeader(key,headers.get(key));
}
}
HttpResponse res=client.execute(get);
InputStream输入=res.getEntity().getContent();
整数计数=0;
字节[]数据=新字节[4096];
StringBuilder sb=新的StringBuilder();
而((计数=输入。读取(数据))!=-1){
sb追加(新字符串(数据,0,计数,“UTF-8”);
//这里是你可以阅读文件的地方。
输出。写入(数据);
}
input.close();
output.close();
HTTP POST示例

String myUrl = "http://enter.the.url.you.want";
OutputStream output = new FileOutputStream("TEMP_FILE_PATH");

// Define Header information if you want to have.
Map<String, String> headers = new HashMap<String, String>();
headers.put("range", "bytes=0-51199");

// org.apache.http.client.HttpClient
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(myUrl);

if(headers != null){
    Iterator<String> iter = headers.keySet().iterator();
    while(iter.hasNext()){
        String key = (String)iter.next();
        get.addHeader(key, headers.get(key));
    }
}

HttpResponse res = client.execute(get);
InputStream input = res.getEntity().getContent();

int count = 0;
byte[] data = new byte[4096];

StringBuilder sb = new StringBuilder();

while ((count = input.read(data)) != -1) {
    sb.append(new String(data, 0, count, "UTF-8"));
    // Here is the place you can read a file.
    output.write(data);
}

input.close();
output.close();
String myUrl = "http://enter.the.url.you.want";
OutputStream output = new FileOutputStream("TEMP_FILE_PATH");

// Define parameters if you want to have.
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("key", "some-value"));

// Define Header information if you want to have.
Map<String, String> headers = new HashMap<String, String>();
headers.put("range", "bytes=0-51199");

// org.apache.http.client.HttpClient
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(myUrl);
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));

if(headers != null){
    Iterator<String> iter = headers.keySet().iterator();
    while(iter.hasNext()){
        String key = (String)iter.next();
        post.addHeader(key, headers.get(key));
    }
}

HttpResponse res = client.execute(post);
InputStream input = res.getEntity().getContent();

int count = 0;
byte[] data = new byte[4096];

StringBuilder sb = new StringBuilder();

while ((count = input.read(data)) != -1) {
    sb.append(new String(data, 0, count, "UTF-8"));
    // Here is the place you can read a file.
    output.write(data);
}

input.close();
output.close();
String myUrl=”http://enter.the.url.you.want";
OutputStream输出=新文件OutputStream(“临时文件路径”);
//如果您想拥有,请定义参数。
List nameValuePairs=新的ArrayList(2);
添加(新的BasicNameValuePair(“键”、“某些值”);
//如果您想获得标题信息,请定义标题信息。
Map headers=newhashmap();
headers.put(“范围”,“字节=0-51199”);
//org.apache.http.client.HttpClient
HttpClient=new DefaultHttpClient();
HttpPost=新的HttpPost(myUrl);
setEntity(新的UrlEncodedFormEntity(nameValuePairs));
如果(标题!=null){
迭代器iter=headers.keySet().Iterator();
while(iter.hasNext()){
字符串键=(字符串)iter.next();
post.addHeader(key,headers.get(key));
}
}
HttpResponse res=client.execute(post);
InputStream输入=res.getEntity().getContent();
整数计数=0;
字节[]数据=新字节[4096];
StringBuilder sb=新的StringBuilder();
而((计数=输入。读取(数据))!=-1){
sb追加(新字符串(数据,0,计数,“UTF-8”);
//这里是你可以阅读文件的地方。
输出。写入(数据);
}
input.close();
output.close();

从技术上讲,不是。即使您没有实际下载文件并将其保存在本地,您仍然可以将内容从服务器下载到内存中的客户端计算机,以便处理它。所以我猜答案取决于你对“下载”的定义,嗯,有没有关于这方面的资源?移动设备可以利用这一点吗?最后,什么是最佳实践:下载到物理设备或在服务器上使用“解析器”?有关Java web技术(如Servlet和JSP)的资源?Re:mobile decives,这取决于您打算在数据被解析后对其执行什么操作?Re:最佳实践取决于您需要解析数据的位置?你在解析什么?我需要解析服务器上的一个非常大的文件,并在该文件中找到一些特定信息,然后在移动设备上显示结果。然后在服务器上解析它,并将相关结果发送到移动设备。我建议你仔细阅读。这会是拉通知吗?