當前位置:首頁 » 文件管理 » java文件鎖之後可以讀寫嗎
擴展閱讀
可以啪啪的污游戲 2024-11-24 11:41:17

java文件鎖之後可以讀寫嗎

發布時間: 2024-05-04 00:24:41

『壹』 java中對文件進行讀寫操作的基本類是什麼

Java.io包中包括許多類提供許多有關文件的各個方面操作。
1 輸入輸出抽象基類InputStream/OutputStream ,實現文件內容操作的基本功能函數read()、 write()、close()、skip()等;一般都是創建出其派生類對象(完成指定的特殊功能)來實現文件讀寫。在文件讀寫的編程過程中主要應該注意異常處理的技術。
2 FileInputStream/FileOutputStream:
用於本地文件讀寫(二進制格式讀寫並且是順序讀寫,讀和寫要分別創建出不同的文件流對象);
本地文件讀寫編程的基本過程為:
① 生成文件流對象(對文件讀操作時應該為FileInputStream類,而文件寫應該為FileOutputStream類);
② 調用FileInputStream或FileOutputStream類中的功能函數如read()、write(int b)等)讀寫文件內容;
③ 關閉文件(close())。
3 PipedInputStream/PipedOutputStream:
用於管道輸入輸出(將一個程序或一個線程的輸出結果直接連接到另一個程序或一個線程的輸入埠,實現兩者數據直接傳送。操作時需要連結);
4管道的連接:
方法之一是通過構造函數直接將某一個程序的輸出作為另一個程序的輸入,在定義對象時指明目標管道對象
PipedInputStream pInput=new PipedInputStream();
PipedOutputStream pOutput= new PipedOutputStream(pInput);
方法之二是利用雙方類中的任一個成員函數 connect()相連接
PipedInputStream pInput=new PipedInputStream();
PipedOutputStream pOutput= new PipedOutputStream();
pinput.connect(pOutput);
5 管道的輸入與輸出:
輸出管道對象調用write()成員函數輸出數據(即向管道的輸入端發送數據);而輸入管道對象調用read()成員函數可以讀起數據(即從輸出管道中獲得數據)。這主要是藉助系統所提供的緩沖機制來實現的。
6隨機文件讀寫:
RandomAccessFile類(它直接繼承於Object類而非InputStream/OutputStream類),從而可以實現讀寫文件中任何位置中的數據(只需要改變文件的讀寫位置的指針)。
隨機文件讀寫編程的基本過程為:
① 生成流對象並且指明讀寫類型;
② 移動讀寫位置;
③ 讀寫文件內容;
④ 關閉文件。

七里河團隊答疑助人,希望我的回答對你有所幫助

『貳』 java鏂囦歡閿佷負浠涔堜笉璧蜂綔鐢錛熶笅闈㈣繍琛岀殑鏃跺欒ユ枃浠朵緷鐒惰兘琚鎵撳紑闃匡紵

package com.ruan.io;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.nio.channels.FileLock;
/**
* 鏂囦歡鍔犻攣
* @author wangjian
*/
public class LockTester {
public static void main(String[] args) throws Exception{
//鍔犱笂true鍙傛暟錛屼笉浼氶噸鏂扮敓鎴愪竴涓鏂扮殑鏂囦歡銆
FileOutputStream fos = new FileOutputStream("d:/a.txt",true);
FileLock fl = fos.getChannel().tryLock();
new ReadLockedFile().start(); //璇曞浘璇誨彇,涓嶆垚鍔熴
if(fl!=null){
System.err.println("鏂囦歡宸茬粡閿佸畾..");
System.err.println(fl.isShared());
Thread.sleep(1000*60); //閿佸畾1鍒嗛挓
fl.release(); //瑙i櫎閿佸畾
System.err.println("瑙i櫎閿佸畾..");
}
}
}
/**
* 鐢ㄥ彟涓涓綰跨▼璇誨彇宸茬粡閿佸畾鐨勬枃浠躲
*/
class ReadLockedFile extends Thread{
public void run(){
try{
BufferedReader br =
new BufferedReader(new InputStreamReader(new FileInputStream("d:/a.txt")));
String str = br.readLine();
while(str!=null){
System.err.println(str);
str = br.readLine();
}
br.close();
}catch(Exception e){
e.printStackTrace();
}
}
}