
文章插圖
在項(xiàng)目中一般都會(huì)遇到文件的讀寫,
一般有兩個(gè)問題要進(jìn)行處理
1路徑問題
2讀寫問題
路徑的解決方法
路徑之間的連接”//”=”\”=”/”
eg1:D盤下面file文件夾里面的1.txt
path=”D://file//1.txt”
path=”D:/file/1.txt”
path=”D:\file\1.txt”
這三種都可以
1絕對路徑(堅(jiān)決不推薦使用)
就是從電腦的根目錄開始C盤D盤,詳情參考eg1
2相對路徑
java項(xiàng)目中默認(rèn)是從項(xiàng)目的根目錄開始的 如下圖
獲取到該目錄下的所有文件(獲取的是一個(gè)目錄)
./ 獲取到當(dāng)前根目錄
String path=”./”;File f=new File(path);File[] files=f.listFiles();for(int i=0;i<files.length;i++){System.out.println(files[i].getName());}../ 獲取到根目錄下的父目錄 想要獲取到多級的父目錄只需要../ 寫n個(gè)就好了(需要注意的是這種方法最大只能獲取到 Windows盤下面的根目錄,就是最多只能獲取到 C盤 或者D盤,不可能和Linux 那種 /root/D)web 項(xiàng)目中
主要是分清楚 工作空間和發(fā)布空間就好了
比如當(dāng)初使用struts2文件上傳的時(shí)候
定義接受文件的目錄
ServletContext servletContext = ServletActionContext.getServletContext();
String str=servletContext.getRealPath(“/files/”+fileFileName);
eclipse暫時(shí)出了點(diǎn)小問題等會(huì)再寫這個(gè)
讀寫文件(如果不正確歡迎積極指出,一起進(jìn)步)
因?yàn)槲募胁煌母袷剑臀谋疚募碚f有utf-8 GBK 等等
建議使用字節(jié)流 ( InputStream是所有字節(jié)輸入流的祖先,而OutputStream是所有字節(jié)輸出流的祖先)進(jìn)行讀取而不是字符流( Reader是所有讀取字符串輸入流的祖先,而writer是所有輸出字符串的祖先)
其實(shí)就是內(nèi)部一個(gè)使用byte[]實(shí)現(xiàn),一個(gè)是用char[] 這個(gè)可以看一下 JDK的源碼就了解了
具體 字符流字節(jié)流之間的區(qū)別請看轉(zhuǎn)載處
http://blog.csdn.net/zxman660/article/details/7875799http://blog.csdn.net/cynhafa/article/details/6882061讀寫文件package com.wzh.utils;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;public class InOutFile {/*** @param file null、一個(gè)文件、一個(gè)文件目錄、* <pre>* fileToByte(null)=null* fileToByte(file)=null file>2G* fileToByte(文件目錄)=null* fileToByte(file)=byte[]* </pre>* @return null(文件不存在,null,文件目錄,文件太大>2G) byte[](轉(zhuǎn)換成功)*/public byte[] fileToByte(File file) {byte[] buffer = null;if (file == null) {throw new IndexOutOfBoundsException();}if (file.isDirectory())return buffer;if (file.length() > Integer.MAX_VALUE)return buffer;if (file.isFile()) {int filelength = (int) file.length();InputStream inputStream = null;BufferedInputStream bufferedInputStream = null;OutputStream outputStream=null;BufferedOutputStream bufferedOutputStream=null;File outfile=new File(“files//out//”+file.getName());int n = 0;int off = 0;int length = 4096;try {if(!outfile.exists())outfile.createNewFile();inputStream = new FileInputStream(file);outputStream=new FileOutputStream(outfile, true);bufferedInputStream = new BufferedInputStream(inputStream);bufferedOutputStream=new BufferedOutputStream(outputStream);buffer = new byte[filelength];/** 添加(length <= filelength – off) ? length : filelength – off)的比較* 為了防止讀到最后buffer 剩余的長度沒有4096 裝不下那么多會(huì)導(dǎo)致讀取不了IndexOutOfBoundsException()* 當(dāng)filelength – off=0時(shí)表示文件讀取完畢但是read內(nèi)部認(rèn)為是其他線程占用io導(dǎo)致堵塞并不會(huì)認(rèn)為文件讀取完畢* 所以要添加上filelength – off>0*/while ((filelength – off) > 0 && (n = bufferedInputStream.read(buffer, off,((length <= filelength – off) ? length : filelength – off))) >= 0) {bufferedOutputStream.write(buffer, off, n);off += n;}}catch (Exception e) {}finally {closeInputStream(bufferedInputStream);closeInputStream(inputStream);closeOutputStream(bufferedOutputStream);closeOutputStream(outputStream);System.out.println(“end”);}}return buffer;}/*** close inoutstream* @param inputStream null or the inputstream’s child*/private void closeInputStream(InputStream inputStream) {if (inputStream == null)return;try {inputStream.close();}catch (Exception e) {}}/*** close outputStream* @param outputStream null or the outputStream child*/private void closeOutputStream(OutputStream outputStream) {if (outputStream == null)return;try {outputStream.flush();outputStream.close();}catch (Exception e) {}}}當(dāng)然字符流也可以進(jìn)行讀取文件
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時(shí)就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- 詳解畫漫畫的步驟 簡單動(dòng)漫畫教程
- java實(shí)現(xiàn)驗(yàn)證碼功能 用mysql刪除數(shù)據(jù)庫語句
- 英雄聯(lián)盟新版符文詳解 lol天賦介紹詳細(xì)圖解
- java開發(fā)常用四大框架 playonlinux教程
- java編程代碼大全 fastjson字符串轉(zhuǎn)對象報(bào)錯(cuò)
- 上古卷軸5技能樹詳解 上古卷軸5技能樹mod有哪些
- 詳解cad指定角度畫直線 cad教育版怎么處理
- 哪家的少兒編程培訓(xùn)班好 西安編程培訓(xùn)班哪個(gè)好
- 大一java考試題庫 java基礎(chǔ)考試題及答案
- arduino編程基礎(chǔ)知識 arduino編程語言入門
