‘壹’ 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();
}
}
}