java根据路径读取文件

java根据路径读取文件,第1张

其读取方法为:

import java.io.File  

import java.io.FileNotFoundException  

import java.io.IOException  

import java.util.ArrayList  

  

  

public class readFile {  

    private static ArrayList<String> listname = new ArrayList<String>()  

    public static void main(String[] args)throws Exception{  

        readAllFile("C:/Users/HP/Desktop")  

        System.out.println(listname.size())  

    }  

    public static void readAllFile(String filepath) {  

        File file= new File(filepath)  

        if(!file.isDirectory()){  

            listname.add(file.getName())  

        }else if(file.isDirectory()){  

            System.out.println("文件")  

            String[] filelist=file.list()  

            for(int i = 0i<filelist.lengthi++){  

                File readfile = new File(filepath)  

                if (!readfile.isDirectory()) {  

                    listname.add(readfile.getName())  

                } else if (readfile.isDirectory()) {  

                    readAllFile(filepath + "\\" + filelist[i])//递归  

                }  

            }  

        }  

        for(int i = 0i<listname.size()i++){  

            System.out.println(listname.get(i))  

        }  

    }  

}

在请求头里设置Range,可以拿到不同的部分,前提还需要web server支持。

      

/** 

 * 开始下载 

 * @throws Exception 

 */  

public void startDown() throws Exception{  

    HttpClient httpClient = new DefaultHttpClient()  

    try {  

        //获取下载文件信息  

        getDownloadFileInfo(httpClient)  

        //启动多个下载线程  

        startDownloadThread()  

        //开始监视下载数据  

        monitor()  

    } catch (Exception e) {  

        throw e  

    } finally {  

        httpClient.getConnectionManager().shutdown()  

    }  

}  

  

/** 

 * 获取下载文件信息 

 */  

private void getDownloadFileInfo(HttpClient httpClient) throws IOException,  

        ClientProtocolException, Exception {  

    HttpHead httpHead = new HttpHead(url)  

    HttpResponse response = httpClient.execute(httpHead)  

    //获取HTTP状态码  

    int statusCode = response.getStatusLine().getStatusCode()  

  

    if(statusCode != 200) throw new Exception("资源不存在!")  

    if(getDebug()){  

        for(Header header : response.getAllHeaders()){  

            System.out.println(header.getName()+":"+header.getValue())  

        }  

    }  

  

    //Content-Length  

    Header[] headers = response.getHeaders("Content-Length")  

    if(headers.length > 0)  

        contentLength = Long.valueOf(headers[0].getValue())  

  

    httpHead.abort()  

      

    httpHead = new HttpHead(url)  

    httpHead.addHeader("Range", "bytes=0-"+(contentLength-1))  

    response = httpClient.execute(httpHead)  

    if(response.getStatusLine().getStatusCode() == 206){  

        acceptRanges = true  

    }  

    httpHead.abort()  

}  

  

/** 

 * 启动多个下载线程 

 * @throws IOException 

 * @throws FileNotFoundException 

 */  

private void startDownloadThread() throws IOException,  

        FileNotFoundException {  

    //创建下载文件  

    File file = new File(localPath)  

    file.createNewFile()  

    RandomAccessFile raf = new RandomAccessFile(file, "rw")  

    raf.setLength(contentLength)  

    raf.close()  

      

    //定义下载线程事件实现类  

    DownloadThreadListener listener = new DownloadThreadListener() {  

        public void afterPerDown(DownloadThreadEvent event) {  

            //下载完一个片段后追加已下载字节数  

            synchronized (object) {  

                DownloadTask.this.receivedCount += event.getCount()  

            }  

        }  

  

        public void downCompleted(DownloadThreadEvent event) {  

            //下载线程执行完毕后从主任务中移除  

            threads.remove(event.getTarget())  

            if(getDebug()){  

                System.out.println("剩余线程数:"+threads.size())  

            }  

        }  

    }  

      

    //不支持多线程下载时  

    if (!acceptRanges) {  

        if(getDebug()){  

            System.out.println("该地址不支持多线程下载")  

        }  

        //定义普通下载  

        DownloadThread thread = new DownloadThread(url, 0, contentLength, file, false)  

        thread.addDownloadListener(listener)  

        thread.start()  

        threads.add(thread)  

        return  

    }  

      

    //每个请求的大小  

    long perThreadLength = contentLength / threadCount + 1  

    long startPosition = 0  

    long endPosition = perThreadLength  

    //循环创建多个下载线程  

    do{  

        if(endPosition >= contentLength)  

            endPosition = contentLength - 1  

  

        DownloadThread thread = new DownloadThread(url, startPosition, endPosition, file)  

        thread.addDownloadListener(listener)  

        thread.start()  

        threads.add(thread)  

  

        startPosition = endPosition + 1//此处加 1,从结束位置的下一个地方开始请求  

        endPosition += perThreadLength  

    } while (startPosition < contentLength)  

}

publicDataSet ImportExcel(string strFileName) //strFileName指定的路径+文件名.xls

{

if (strFileName != "")

{

string conn = "Provider=Microsoft.Jet.OLEDB.4.0Data Source=" + strFileName + "Extended Properties=Excel 8.0"

string sql = "select * from [Sheet1$]"

OleDbDataAdapter da = newOleDbDataAdapter(sql, conn)

DataSet ds = newDataSet()

try

{

da.Fill(ds, "datatable")

}

catch

{

}

return ds

}

else

{

return null

}

}

这个方法我经常用,转成dataset和datatable没什么太大区别吧,反正ds.Tables[0]就是dataTable了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12043525.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存