Java语言读取打开一个文件,文件的内容是一个字典,那么直接打开和直接读取的区别是什么
在Java语言中,打开一个文件和读取文件内容是两个不同的操作。
打开文件(Open a file):打开文件是指在操作系统中建立与文件的连接,并为后续的读取或写入做好准备。在Java中,可以使用java.io.File
类或java.nio.file.Path
类来表示文件路径,然后使用FileInputStream
或BufferedReader
等类来打开文件。
打开文件的主要目的是为了建立与文件的关联,并获取文件的相关信息,例如文件的大小、修改日期等。在文件打开的过程中,操作系统会为该文件分配系统资源,例如文件句柄,以便于后续的读取或写入操作。
读取文件内容(Read file content):读取文件内容是指从已经打开的文件中读取数据。在Java中,可以使用FileInputStream
、BufferedReader
、Scanner
等类来读取文件内容。
读取文件内容的方式取决于文件的类型和结构。对于字典文件,可以使用适当的文件读取类(如BufferedReader
)逐行读取文件内容,然后解析每一行的数据以获取字典中的键值对。
因此,打开文件是为了建立与文件的连接并准备读取或写入操作,而读取文件内容是从已经打开的文件中获取实际的数据。这两个操作是连续的,通常在打开文件后紧跟读取文件内容的操作。
进程:一个程序是可以有多个进程的,进程与进程之间的内存资源相互隔离的,无法直接获取。
总体概念是静态:进入内存后,分配对应的内存空间,同时产生一个主线程;
线程:线程是建立在进程之下的,多个线程可以共享同一个进程下的内存空间;
线程概念是动态:可执行的计算单元,线程是一条一条的指令,资源都是在进程中的;
为什么不用多个进程实现多线操作?
如果允许进程之间直接共享内存就会导致安全性变低,如下案例:
1、A程序直接读B程序中内存资源,获取B程序的账号密码;
2、A程序直接编写入侵代码,让B程序内存资源崩溃导致B程序直接关闭;
线程上下文的切换流程
1、挂起一个线程,然后将这个线程在CPU中的状态信息,也就是上下文信息保存到缓存中;
2、在缓存中检索下一个线程的上下文并将其在CPU的寄存器中恢复;
3、跳转到程序计数器所指向的位置,也就是跳转到线程被中断时代码执行的位置,并恢复该线程的执行;