java常用的文件讀寫操作
現在算算已經做java開發兩年了,回過頭想想還真是挺不容易的,java的東西是比較復雜但是如果基礎功扎實的話能力的提升就很快,這次特別整理了點有關文件操作的常用代碼和大家分享
1.文件的讀取(普通方式)
(1)第一種方法
File f=new File("d:"+File.separator+"test.txt");
InputStream in=new FileInputStream(f);
byte[] b=new byte[(int)f.length()];
int len=0;
int temp=0;
while((temp=in.read())!=-1){
b[len]=(byte)temp;
len++;
}
System.out.println(new String(b,0,len,"GBK"));
in.close(); 這種方法貌似用的比較多一點
(2)第二種方法
File f=new File("d:"+File.separator+"test.txt");
InputStream in=new FileInputStream(f);
byte[] b=new byte[1024];
int len=0;
while((len=in.read(b))!=-1){
System.out.println(new String(b,0,len,"GBK"));
}
in.close(); 2.文件讀取(內存映射方式)
File f=new File("d:"+File.separator+"test.txt");
FileInputStream in=new FileInputStream(f);
FileChannel chan=in.getChannel();
MappedByteBuffer buf=chan.map(FileChannel.MapMode.READ_ONLY, 0, f.length());
byte[] b=new byte[(int)f.length()];
int len=0;
while(buf.hasRemaining()){
b[len]=buf.get();
len++;
}
chan.close();
in.close();
System.out.println(new String(b,0,len,"GBK")); 這種方式的效率是最好的,速度也是最快的,因為程序直接操作的是內存
3.文件復制(邊讀邊寫)操作
(1)比較常用的方式
package org.lxh;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
public class ReadAndWrite {
public static void main(String[] args) throws Exception {
File f=new File("d:"+File.separator+"test.txt");
InputStream in=new FileInputStream(f);
OutputStream out=new FileOutputStream("e:"+File.separator+"test.txt");
int temp=0;
while((temp=in.read())!=-1){
out.write(temp);
}
out.close();
in.close();
}
} </pre></div>
(2)使用內存映射的實現
package org.lxh;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class ReadAndWrite2 {
public static void main(String[] args) throws Exception {
File f=new File("d:"+File.separator+"test.txt");
FileInputStream in=new FileInputStream(f);
FileOutputStream out=new FileOutputStream("e:"+File.separator+"test.txt");
FileChannel fin=in.getChannel();
FileChannel fout=out.getChannel();
//開辟緩沖
ByteBuffer buf=ByteBuffer.allocate(1024);
while((fin.read(buf))!=-1){
//重設緩沖區
buf.flip();
//輸出緩沖區
fout.write(buf);
//清空緩沖區
buf.clear();
}
fin.close();
fout.close();
in.close();
out.close();
}
} </pre></div>
</div>
</div>
來自:http://blog.csdn.net/smartcodekm/article/details/25914785
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
相關資訊
相關文檔
目錄