JAVA基础一: 文件File

绝对路径:文件存放在操作系统中的完整路径;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();
}




猜你喜欢

转载自blog.csdn.net/waterflying2015/article/details/80370162