96SEO 2026-02-19 16:54 18
对于计算机来说“文件”是一个非常广义的概念可以指普通的文件文件夹一些硬件设备也被抽象成了文件例如键盘耳机显示器网卡等

比如有一个很大的文件我们需要把这个文件整体复制一份就是顺序读写
文件系统的结构是按照“树形结构”来组织文件的是N叉树一个普通文件非文件来说里面又可以有很多的子节点
形如上述的图片从树根节点一级一级的往下走直到直到目标文件这个过程中经过的所有文件目录的名字串起来使用正斜杠——“/”或者反斜杠——“\”分割就构成了“路径”
文本文件是按照“字符串”的形式来理解文本内容的文本文件里面的二进制内容也都表示为字符串可以理解为——二进制内容都是合法的字符像字符编码英文字母用ASCII汉字用utf8/gbk
File(C:/User/1/test.txt);//绝对路径//File
File(./test.txt);System.out.println(f.exists());//判断文件目录是否存在System.out.println(f.getParent());System.out.println(f.getName());//返回file对象的名称System.out.println(f.getPath());//返回file对象的文件路径System.out.println(f.getAbsolutePath());//返回绝对路径System.out.println(f.getCanonicalPath());//返回对象修饰过后的路径canonical规范的}}代码示例二
File(C:/User/1/test.txt);//绝对路径File
File(./test.txt);System.out.println(f.exists());//判断文件文件路径System.out.println(f.getName());//返回file对象的名称System.out.println(f.getPath());//返回file对象的文件路径System.out.println(f.getAbsolutePath());//返回绝对路径System.out.println(f.getCanonicalPath());//返回对象修饰过后的路径canonical规范的}}4判断方法
我们可以使用file.createNewFile如下代码也可以直接手动在当前目录创建一个File文件——名字叫test.txt
File(./test.txt);System.out.println(file.exists());//文件存在吗System.out.println(file.isFile());//是普通文件嘛System.out.println(file.isDirectory());//是目录吗boolean
file.createNewFile();//创建文件返回的结果就是创建成功和创建失败System.out.println(ret:
file.deleteNewFile退出时删除文件返回值为void
com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;import
file.delete();//删除文件//System.out.println(ret);boolean
file.createNewFile();//创建文件file.deleteOnExit();//返回值为void类型退出的时候删除文件测试的时候注意看左边的目录栏Thread.sleep(5000);}}6创建移动方法
File(.);//返回的是对象代表的下所有的文件不过是以file对象表示File[]
file.listFiles();System.out.println(Arrays.toString(files2));}
File(./aaa);//创建file为对象的也可以用于创建多级也可以用于创建多级一级目录的删System.out.println(ret);}
file2.renameTo(file1);//把bbb这个文件移入./aaa/bbb/ccc的/ccc下System.out.println(ret);}}四文件流
举个例子要写100字节的内容我们可以分10次写每次写10字节的内容也可以分5次来写每次写20字节的内容;当然也可以一次性写完
“流”是操作系统提供的概念Java标准库中对于“进行了”封装提供了一组类来负责这些工作
代表类InputStream——输入流OutPutStream——输出流
FileInputStream(./test.txt);//在中间一定会涉及一些对文件的操作之类的如果遇到bug或者像return之类的不可控的操作close操作可能就会执行不到了//打开了文件最后还要关掉打开文件操作会抛出FileNotFoundException异常inputStream.close();//关闭文件会抛出IOException异常前后两者为父类子类的关系*//*//第二种写法InputStream
FileInputStream(./test.txt);}finally{inputStream.close();}*//*//第三种写法try
FileInputStream(./test.txt)){//出了try{}代码块范围后编译器会自动调用.close方法关闭文件//FileInputStream继承于InputStreamInputStream又实现了Closeable接口必须实现了Closeable接口才可以被放到try里面}*/}}1构造方法
注你给cpu送的信息叫输入比如读操作。
cpu给存储器等这些硬件设备送的信息叫做输出比如写操作
如果不执行文件关闭.close方法就会有大问题。
这里本质上是释放了文件的相关资源PCB文件描述符表不懂得铁子可以看前面写过的文章这个表本质是一个数组或者顺序表每打开一个文件就会占据一个位置如果不关闭一直打开就会导致表被耗尽后续再想打开就会报错。
那么提问文件描述符表不会动态扩容吗对操作系统的内核来说需要很高的性能付出的代价太大了容易造成系统的卡顿
read读文件就是把硬盘数据读取到内存当中buffer译为缓冲区
注意点②传入的数组在方法内部对数组内容修改过后方法外部也能生效
FileInputStream(./test.txt)){//读取操作,读到-1的时候就会停止while(true){int
FileInputStream(./test.txt)){while
(true){//也可以一次读若干个字节,buffer(缓冲区)byte[]
byte[1024];//读的时候会尝试把buffer[1024]填满int
inputStream.read(buffer);//传入的参数是buffer数组方法内部对数组内容进行修改后方法外部也能生效实际上填不满1024个字节if
-1){break;//读取到最后一个字符就break}for
注意看while循环什么是文件流假设我们要读取的文件很大在这个循环中每次尽可能读取1024个字节可能读到的字节数比这个要小这次读不完我们就先用String给存起来0到n下一次while循环就接着读“特别像字符串拼接
FileInputStream(./test.txt)){while
(true){//也可以一次读若干个字节,buffer(缓冲区)byte[]
byte[1024];//读的时候会尝试把buffer[1024]填满int
inputStream.read(buffer);//传入的参数是buffer数组方法内部对数组内容进行修改后方法外部也能生效if
n);//构造一个String对象数组前n个字节来构造System.out.printf(string);//遍历数组并打印}}}
{try{//打开操作会把原有文件中的内容清空所以罪魁祸首不是Write操作而是打开操作OutputStream
FileOutputStream(./test.txt);//OutputStream
FileOutputStream(./test.txt,true);追加写byte[]
byte[]{97,98,99,100,101};outputStream.write(buffer);}catch
ScannerSystem.in中System.in本质就是一个InputStream
FileInputStream(./test.txt)){Scanner
Scanner(inputStream);while(scanner.hasNext()){String
scanner.next();System.out.println(s);}}
以字符为单位进行读写例如用utf8表示汉字3个字节就是一个汉字每次读写都得以3个字节为单位来进行读写不能一次读半个汉字
在用char类型的数组存储汉字时是把3个字节组成的utf8汉字转化为了Unicode输出为String类型时在把Unicode转化为字节
{try{//Reader和Writer的字符流与OutputStream和InputStream相似Reader
FileReader(./test.txt);while(true){char[]
记住要把文件打开操作放到try的括号里要不然不会默认执行close关闭文件操作
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback