绝对路径:文件存放在操作系统中的完整路径;c:\\program\\java\\A.java
相对路径:相对于当前目录而言的路劲,不会从根目录出发;
1.文件读写;
一般读写文件需要两次拷贝,从磁盘读取到操作系统内核,在由内核拷贝到应用程序内存中,操作系统在内核态,用户程序是用户态,应用系统调用操作系统的功能需要切换两种时态,先是从用户态切换到内核态,再由内核态切换到用户态,这样开销很大,所以需要尽量减少这样的开销;
打开一个文件的时候,会在操作系统内核建立一个有关该文件的内存结构,这个文件结构通常以一个整数索引来引用,这个索引一般称为文件描述fd,这个结构是消耗内存的,操作系统能同时打开的文件结构也是有限的,所以需要记得关闭文件,关闭的时候会将fd缓冲区的数据同步到内存上。
2.java文件描述:
io的输入流,输出流
输入流:输入流是可以从中获取数据,输入流的实际提供者可以是键盘,文件,网络;inputStream,FileInputStream
输出流:可以向其中写入数据,实际目的地可以是显示终端,文件,网络等。OutStream,FileOutStream;
InputStream inputStream = null;
OutputStream outputStream = null;
try {
inputStream = new FileInputStream(new File("D:\\wifi密码.txt"));
outputStream = new FileOutputStream(new File("D:\\wifi密码2.txt"));
int temp = 0;
byte[] b = new byte[1024];
while ((temp = inputStream.read(b)) != -1) {
outputStream.write(b);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
inputStream.close();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("读取完成");
}
Inputstream 和 OutputStream 都是二进制的形式操作数据;不能方便的操作文本文件,没有编码的概念,能够方便的按照字节处理文本数据的基类是 Reader和Writer; 通俗的讲:write,reader 能够操控字符,它能做的inputstream和outputstream 也能做,反过来就不行了;
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(new File("D:\\wifi密码.txt")));
int b = 0;
char[] c = new char[1024];
while((b = reader.read(c)) !=-1){
System.out.println(new String(c,0,b));
}
} catch (Exception e) {
e.printStackTrace();
}
File f = new File("D:\\write.txt");
try {
Writer writer = new FileWriter(f);
writer.write("hello world");
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}