當前位置:首頁 » 現代小說 » 小說下載功能實現代碼

小說下載功能實現代碼

發布時間: 2021-06-18 18:30:13

1. 怎麼利用網頁源代碼下載小說

首先打開你要下載小說的頁面 然後在你所用的瀏覽器右上方工具欄中 點擊 文件—保存網頁—出來對話框之後選擇的保存類型為(網頁,僅HTML) 網頁就保存在你的桌面上了,雙擊就可以直接打開。這其實就是保存網頁的方式,沒有網路也可以打開。當然你要是下載小說的話 建議按照樓上的說法 更省事一些 你自己操作看看吧

2. 怎麼在txt里寫代碼實現各種功能,比如查看電腦信息

你說的那些是dos命令,
echo是回顯的意思,前面+@是指本行語句也隱藏的意思
正確的做法是這樣的。
@echo off
systeminfo

然後將保存的txt文件改後綴名為.bat
就可以了~

3. java 如何實現下載功能

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.ProtocolException;
import java.net.URI;
import java.net.URL;
import java.util.Random;
/**
*
* 實現了下載的功能*/

public class SimpleTh {


public static void main(String[] args){
// TODO Auto-generated method stub
//String path = "http://www.7cd.cn/QingTengPics/倩女幽魂.mp3";//MP3下載的地址
String path ="http://img.99luna.com/music/%CF%EB%C4%E3%BE%CD%D0%B4%D0%C5.mp3";

try {
new SimpleTh().download(path, 3); //對象調用下載的方法
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
public static String getFilename(String path){//獲得文件的名字
return path.substring(path.lastIndexOf('/')+1);
}


public void download(String path,int threadsize) throws Exception//下載的方法
{//參數 下載地址,線程數量

URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();//獲取HttpURLConnection對象
conn.setRequestMethod("GET");//設置請求格式,這里是GET格式
conn.setReadTimeout(5*1000);//
int filelength = conn.getContentLength();//獲取要下載文件的長度
String filename = getFilename(path);
File saveFile = new File(filename);
RandomAccessFile accessFile = new RandomAccessFile(saveFile, "rwd");
accessFile.setLength(filelength);
accessFile.close();
int block = filelength%threadsize ==0?filelength/threadsize:filelength/threadsize+1;
for(int threadid = 0;threadid<=threadsize;threadid++){

new DownloadThread(url,saveFile,block,threadid).start();
}

}
private final class DownloadThread extends Thread{
private URL url;
private File saveFile;
private int block;//每條線程下載的長度
private int threadid;//線程id

public DownloadThread(URL url,File saveFile,int block,int threadid){
this.url = url;
this.saveFile= saveFile;
this.block = block;
this.threadid = threadid;
}

@Override
public void run() {
//計算開始位置的公式:線程id*每條線程下載的數據長度=?
//計算結束位置的公式:(線程id+1)*每條線程下載數據長度-1=?
int startposition = threadid*block;
int endposition = (threadid+1)*block-1;
try {
try {
RandomAccessFile accessFile = new RandomAccessFile(saveFile, "rwd");
accessFile.seek(startposition);//設置從什麼位置寫入數據
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setReadTimeout(5*1000);
conn.setRequestProperty("Range","bytes= "+startposition+"-"+endposition);
InputStream inStream = conn.getInputStream();
byte[]buffer = new byte[1024];
int len = 0;
while((len = inStream.read(buffer))!=-1){
accessFile.write(buffer, 0, len);
}
inStream.close();
accessFile.close();
System.out.println("線程id:"+threadid+"下載完成");

} catch (FileNotFoundException e) {

e.printStackTrace();
}
} catch (IOException e) {

e.printStackTrace();
}

}

}
}


參考一下這個代碼。

4. html怎麼實現網頁中文件下載功能

共兩種方法:

一、使用<a>標簽來完成

5. java 關於創建txt文件並下載的實現方法

看不明白,下面這一行是偽代碼么?

FileUtil.writeline(eeFile,errorMsgList,constans.UTF8);

這一行里eeFile是什麼?為何前面叫errFile?



如果不行的話,你乾脆就把errorMsgList寫入當前網頁不行么?

response.getWriter().print(errorMsgList);

6. android能否實現如下功能,比如下載小說或表格,下一行就顯示一行,可以邊下邊看

純文本小說容易實現,但是表格的話就比較麻煩了。

7. 百度下載小說 全是代碼 是怎麼回事

代碼的話大概就只有兩種情況1.一種是強行轉換格式引起的,就是把其他形式的文件轉換成TXT等文件。2.你下錯東西了-.-

8. 誰有C#做的TXT小說閱讀器實現按鈕翻頁功能的源代碼急救

每一個章節一個頁面,還是...

9. web做一個下載功能 求代碼

WebView控制調用相應的WEB頁面進行展示。當碰到頁面有下載鏈接的時候,點擊上去是一點反應都沒有的。原來是因為WebView默認沒有開啟文件下載的功能,如果要實現文件下載的功能,需要設置WebView的DownloadListener,通過實現自己的DownloadListener來實現文件的下載。具體操作如下:

1、設置WebView的DownloadListener:
webView.setDownloadListener(new MyWebViewDownLoadListener());

2、實現MyWebViewDownLoadListener這個類,具體可以如下這樣:

Java代碼
private class MyWebViewDownLoadListener implements DownloadListener{

@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype,
long contentLength) {
Log.i("tag", "url="+url);
Log.i("tag", "userAgent="+userAgent);
Log.i("tag", "contentDisposition="+contentDisposition);
Log.i("tag", "mimetype="+mimetype);
Log.i("tag", "contentLength="+contentLength);
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
}
[java] view plain
private class MyWebViewDownLoadListener implements DownloadListener{

@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype,
long contentLength) {
Log.i("tag", "url="+url);
Log.i("tag", "userAgent="+userAgent);
Log.i("tag", "contentDisposition="+contentDisposition);
Log.i("tag", "mimetype="+mimetype);
Log.i("tag", "contentLength="+contentLength);
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
}

這只是調用系統中已經內置的瀏覽器進行下載,還沒有WebView本身進行的文件下載,不過,這也基本上滿足我們的應用場景了。

我在項目中的運用
項目要求這樣:
1,需要使用WebView載入一個網頁;
2,網頁中有文件下載的鏈接,點擊後需要下載文件到SDcard;
3,然後自動打開文件;
下面是具體解決辦法
第一步,對WebView進行一系列設置。

Java代碼
WebView webview=(WebView)layout.findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebChromeClient(new MyWebChromeClient());
webview.requestFocus();
// webview.loadUrl("file:///android_asset/risktest.html");
webview.loadUrl(jcrs_sub.get(position).addr);
// 設置web視圖客戶端
webview.setWebViewClient(new MyWebViewClient());
webview.setDownloadListener(new MyWebViewDownLoadListener());

//內部類
public class MyWebViewClient extends WebViewClient {
// 如果頁面中鏈接,如果希望點擊鏈接繼續在當前browser中響應,
// 而不是新開Android的系統browser中響應該鏈接,必須覆蓋 webview的WebViewClient對象。
public boolean shouldOverviewUrlLoading(WebView view, String url) {
L.i("shouldOverviewUrlLoading");
view.loadUrl(url);
return true;
}

public void onPageStarted(WebView view, String url, Bitmap favicon) {
L.i("onPageStarted");
showProgress();
}

public void onPageFinished(WebView view, String url) {
L.i("onPageFinished");
closeProgress();
}

public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
L.i("onReceivedError");
closeProgress();
}
}

// 如果不做任何處理,瀏覽網頁,點擊系統「Back」鍵,整個Browser會調用finish()而結束自身,
// 如果希望瀏覽的網 頁回退而不是推出瀏覽器,需要在當前Activity中處理並消費掉該Back事件。
public boolean onKeyDown(int keyCode, KeyEvent event) {
// if((keyCode==KeyEvent.KEYCODE_BACK)&&webview.canGoBack()){
// webview.goBack();
// return true;
// }
return false;
}
[java] view plain
WebView webview=(WebView)layout.findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebChromeClient(new MyWebChromeClient());
webview.requestFocus();
// webview.loadUrl("file:///android_asset/risktest.html");
webview.loadUrl(jcrs_sub.get(position).addr);
// 設置web視圖客戶端
webview.setWebViewClient(new MyWebViewClient());
webview.setDownloadListener(new MyWebViewDownLoadListener());

//內部類
public class MyWebViewClient extends WebViewClient {
// 如果頁面中鏈接,如果希望點擊鏈接繼續在當前browser中響應,
// 而不是新開Android的系統browser中響應該鏈接,必須覆蓋 webview的WebViewClient對象。
public boolean shouldOverviewUrlLoading(WebView view, String url) {
L.i("shouldOverviewUrlLoading");
view.loadUrl(url);
return true;
}

public void onPageStarted(WebView view, String url, Bitmap favicon) {
L.i("onPageStarted");
showProgress();
}

public void onPageFinished(WebView view, String url) {
L.i("onPageFinished");
closeProgress();
}

public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
L.i("onReceivedError");
closeProgress();
}
}

// 如果不做任何處理,瀏覽網頁,點擊系統「Back」鍵,整個Browser會調用finish()而結束自身,
// 如果希望瀏覽的網 頁回退而不是推出瀏覽器,需要在當前Activity中處理並消費掉該Back事件。
public boolean onKeyDown(int keyCode, KeyEvent event) {
// if((keyCode==KeyEvent.KEYCODE_BACK)&&webview.canGoBack()){
// webview.goBack();
// return true;
// }
return false;
}

第二步,起線程開始下載文件。

Java代碼
//內部類
private class MyWebViewDownLoadListener implements DownloadListener {

@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype,
long contentLength) {
if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
Toast t=Toast.makeText(mContext, "需要SD卡。", Toast.LENGTH_LONG);
t.setGravity(Gravity.CENTER, 0, 0);
t.show();
return;
}
DownloaderTask task=new DownloaderTask();
task.execute(url);
}

}
//內部類
private class DownloaderTask extends AsyncTask<String, Void, String> {

public DownloaderTask() {
}

@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
String url=params[0];
// Log.i("tag", "url="+url);
String fileName=url.substring(url.lastIndexOf("/")+1);
fileName=URLDecoder.decode(fileName);
Log.i("tag", "fileName="+fileName);

File directory=Environment.getExternalStorageDirectory();
File file=new File(directory,fileName);
if(file.exists()){
Log.i("tag", "The file has already exists.");
return fileName;
}
try {
HttpClient client = new DefaultHttpClient();
// client.getParams().setIntParameter("http.socket.timeout",3000);//設置超時
HttpGet get = new HttpGet(url);
HttpResponse response = client.execute(get);
if(HttpStatus.SC_OK==response.getStatusLine().getStatusCode()){
HttpEntity entity = response.getEntity();
InputStream input = entity.getContent();

writeToSDCard(fileName,input);

input.close();
// entity.consumeContent();
return fileName;
}else{
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

@Override
protected void onCancelled() {
// TODO Auto-generated method stub
super.onCancelled();
}

@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
closeProgressDialog();
if(result==null){
Toast t=Toast.makeText(mContext, "連接錯誤!請稍後再試!", Toast.LENGTH_LONG);
t.setGravity(Gravity.CENTER, 0, 0);
t.show();
return;
}

Toast t=Toast.makeText(mContext, "已保存到SD卡。", Toast.LENGTH_LONG);
t.setGravity(Gravity.CENTER, 0, 0);
t.show();
File directory=Environment.getExternalStorageDirectory();
File file=new File(directory,result);
Log.i("tag", "Path="+file.getAbsolutePath());

Intent intent = getFileIntent(file);

startActivity(intent);

}

@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
showProgressDialog();
}

@Override
protected void onProgressUpdate(Void... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
}

}

熱點內容
寫神捕門的武俠小說 發布:2024-11-17 02:42:11 瀏覽:78
瑤科幻小說 發布:2024-11-17 02:36:42 瀏覽:403
小說女主名字叫譚靜思 發布:2024-11-17 02:30:48 瀏覽:834
晚清戰爭小說排行榜 發布:2024-11-17 02:09:20 瀏覽:687
惑世血蓮全文免費小說 發布:2024-11-17 02:08:37 瀏覽:886
科幻小說的代表作 發布:2024-11-17 02:06:31 瀏覽:176
2017網路小說財富 發布:2024-11-17 01:29:45 瀏覽:106
科幻小說中的外星球描述 發布:2024-11-17 01:13:47 瀏覽:537
校園小說女主生氣 發布:2024-11-17 00:57:04 瀏覽:208
玄幻現代官場小說完本 發布:2024-11-17 00:48:36 瀏覽:138