96SEO 2026-02-23 13:16 10
https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter19/src/com/yinhai

文件,对我们并不陌生文件是保存数据的地方,比如大家经常使用的word文档,txt文件,excel文件..都是文件。
它既可以保存一张图片
{file.createNewFile();System.out.println(文件创建成功);}
{file.createNewFile();System.out.println(创建成功);}
{e.printStackTrace();}}Testpublic
File(e\\new1.txt);System.out.println(file.getName());//调用相应的方法得到对应信息//获取文件名字getNameSystem.out.println(文件名字
file.getName());//文件绝对路径getAbsolutePathSystem.out.println(文件绝对路径
file.getParent());//文件大小(字节)lengthSystem.out.println(文件大小(字节)
file.length());//文件是否存在existsSystem.out.println(文件是否存在
file.exists());//T//是不是一个文件isFileSystem.out.println(是不是一个文件
I/O技术是非常实用的技术用于处理数据传输。
如读/写文件网络通讯等。
Java程序中对于数据的输入/输出操作以”流(stream)的方式进行。
java.io包下提供了各种流类和接口用以获取不同种类的数据并通过方法输入或输出数据
Java的I0流共涉及40多个类实际上非常规则都是从如上4个抽象基类派生的。
2)由这四个类派生出来的子类名称都是以其父类名作为子类名后缀。
1.字节节点FileInputStream和FileOutputStream
FileInputStream(filePath);//如何返回-1表示读取完毕while
FileInputStream(filePath);//如何返回-1表示读取完毕while
创建方式当写入内容是是追加到文件后面fileOutputStream
FileOutputStream(filePath,true);//写入一个字节fileOutputStream.write(H);////写入字符串String
字节数组//fileOutputStream.write(str.getBytes());/*write(byte[]
off的指定字节数组写入此文件输出流*/fileOutputStream.write(str.getBytes(),
}3.使用FileInput和FileOutput完成文件拷贝
e:\\\\mikucopy.jpg;//将该文件复制到e:\\miku.jpgFileInputStream
FileInputStream(filePath);fileOutputStream
FileOutputStream(destFilePath);//定义一个字节数组提高读取效率byte[]
-1){//读取到后就写入文件fileOutputStream.write(buf,0,readLen);//readLen接受到的是当前读取的长度//fileOutputStream.write(buf);//不能使用该方法会导致及使不够也会抓到1024的长度的内容}System.out.println(拷贝完成);}
null){fileInputStream.close();}if(fileOutputStream
null){fileOutputStream.close();}}
read(char[]):批量读取多个字符到数组返回读取到的字符数如果到文件末尾返回-1
String(char[]):将char[]转换成String
String(char[],off,len):将char[的指定部分转换成String
{System.out.println(~~~readFile02
{e.printStackTrace();}}}}FileWriter常用方法
write(charD,offlen):写入指定数组的指定部分
write(string,off,len):写入字符串的指定部分
注意:FileWriter使用后必须要关闭(close)或刷新(flush),
e:\\note.txt;//创建FileWriter对象FileWriter
write(int):写入单个字符fileWriter.write(H);
write(char[]):写入指定数组fileWriter.write(chars);
write(char[],off,len):写入指定数组的指定部分fileWriter.write(韩顺平教育.toCharArray(),
writestring写入整个字符串fileWriter.write(
你好北京~);fileWriter.write(风雨之后定见彩虹);
write(string,off,len):写入字符串的指定部分fileWriter.write(上海天津,
{//fileWriter.flush();//关闭文件流等价
关闭fileWriter.close();//对应FileWriter
一定要关闭流或者flush才能真正的把数据写入到文件//老韩看源码就知道原因./*看看代码private
{this.out.write(this.bb.array(),
{e.printStackTrace();}}System.out.println(程序结束...);}
1节点流可以从一个特定的数据源读写数据如FileReader、
2处理流(也叫包装流)是“连接”在已存在的流(节点流或处理流)之上为程序提供更为强大的读写功能如BufferedReader.
2处理流(包装流)包装节点流既可以消除不同节点流的实现差异也可以提供更方便的方法来完成输入输出。
面向对象存进去后就只调用BufferedReader即可
3处理流(也叫包装流)对节点流进行包装使用了修饰器设计模式不会直接与数据源相连模拟修饰器设计模式
2操作的便捷:处理流可能提供了一系列便捷的方法来一次输入输出大批量的数据使用更加灵活方便
StringReader_());bufferedReader.readFile(5);bufferedReader.readString(5);}
}3.字符处理流BufferedReader和BufferedWriter
BufferedReader和BufferedWriter属于字符流是按照字符来读取数据的关闭时处理流只需要关闭外层流印可
e:\\test\\BufferedReader_.java;//创建bufferedReaderBufferedReader
FileReader(filePath));//读取String
{System.out.println(line);}//关闭流,
null;}}}*/bufferedReader.close();}
e:\\test\\testBufferedWriter_.txt;//创建BufferedWriter//说明://1.
FileWriter(filePath/*,true*/));bufferedWriter.write(hello,
韩顺平教育!);bufferedWriter.newLine();//插入一个和系统相关的换行bufferedWriter.write(hello2,
韩顺平教育!);bufferedWriter.newLine();bufferedWriter.write(hello3,
韩顺平教育!);bufferedWriter.newLine();//说明关闭外层流即可
,会在底层关闭bufferedWriter.close();}
使用BufferedReader和BufferedWriter完成拷贝
所以不要去操作二进制文件[声音视频docpdf等等]String
e:\\test\\testBufferedCopy.txt;String
FileReader(srcFilePath));bufferedWriter
FileWriter(destFilePath));//读取写入
{//每读取一行就写入bufferedWriter.write(line);bufferedWriter.newLine();}}
}4.字节处理流BufferedInputStream和BufferedOutputStream
BufferedInputStream是字节流在创建BufferedInputStream会创建一个内部缓冲区数组.
BufferedOutputStream是字节流实现缓冲的输出流可以将多个字节写入底层输出流中而不必对每次字节写入调用底层系统
e:\\0245_韩顺平零基础学Java_引出this.avi;
e:\\a3.java;//创建BufferedOutputStream对象BufferedInputStream对象BufferedInputStream
FileInputStream(srcFilePath));bos
FileOutputStream(destFilePath));//循环的读取文件并写入到
readLen);}System.out.println(文件拷贝完毕~~~);}
3.需要让某个对象支持序列化机制则必须让其类是可序列化的为了让某个类是可序列化的该类必须实现如下两个接口之-:
{//序列化后保存的文件格式不是存文本而是按照他的格式来保存String
e:\\test\\objectData.dat;ObjectOutputStream
FileOutputStream(filePath));//序列化数据到
e:\data.datoos.writeInt(100);//
Serializable)oos.writeBoolean(true);//
Serializable)oos.writeChar(a);//
Serializable)oos.writeDouble(9.5);//
Serializable)oos.writeUTF(韩顺平教育);//String(实现了
Serializable)//保存一个dog对象oos.writeObject(new
白色));oos.close();System.out.println(数据保存完毕(序列化形式));}
e:\\test\\objectData.dat;ObjectInputStream
FileInputStream(filePath));//读取//1.
读取(反序列化)的顺序需要和你保存数据(序列化)的顺序一致//2.
否则会出现异常System.out.println(ois.readInt());System.out.println(ois.readBoolean());System.out.println(ois.readChar());System.out.println(ois.readDouble());System.out.println(ois.readUTF());//dog
ois.readObject();System.out.println(运行类型
dog.getClass());System.out.println(dog信息
需要我们将Dog类的定义放在到可以引用的位置,Dog类公有化Dog
(Dog)dog;System.out.println(dog2.getName());
2要求实现序列化或反序列化对象,需要实现Serializable
3序列化的类中建议添加SerialVersionUID,为了提高版本的兼容性
4序列化对象时默认将里面所有属性都进行序列化但除了static或transient修饰的成员
6序列化具备可继承性也就是如果某类已经实现了序列化则它的所有子类也已经默认实现了序列化
键盘System.out.println(System.in.getClass());//1.
显示器System.out.println(System.out.getClass());//传统方法System.out.println();
是使用out对象将数据输出到显示器System.out.println(hello,
韩顺平教育~);//传统的方法Scanner是从标准输入键盘接收数据Scanner
Scanner(System.in);System.out.println(输入内容);String
scanner.next();System.out.println(next
br.readLine();System.out.println(读取到的内容:
InputStreamReader:Reader的子类可以将InputStream(字节流)包装成(转换)成Reader(字符流)
OutputStreamWriter:Writer的子类实现将OutputStream(字节流)包装成Writer(字符流)
3.当处理纯文本数据时如果使用字符流效率更高并且可以有效解决中文问题所以建议将字节流转换成字符流
br.readLine();System.out.println(读取内容
charSet));bufferedWriter.write(hi,
你好);bufferedWriter.close();System.out.println(按照
null;}write(s);}*/out.print(john,
所以我们可以直接调用write进行打印/输出out.write(韩顺平,你好.getBytes());out.close();//我们可以去修改打印流输出的位置/设备//1.
PrintStream(e:\\test\\f1.txt));System.out.println(hello,
PrintWriter(System.out);//打印到显示器
FileWriter(e:\\f2.txt));printWriter.print(hi,
北京你好~~~~);printWriter.close();//flush
setProperty(key,value);:设置键值对到Properties对象
store:将Properties中的键值对存储到配置文件在idea中保存信息到配置文件如果含有中文会存储为unicode码
1.使用Properties类完成对mysql.properties的读取看老师代码演示
FileReader(src\\mysql.properties));//3.
把k-v显示控制台properties.list(System.out);//4.
properties.getProperty(user);String
properties.getProperty(pwd);System.out.println(用户名
ties类添加key-val到新文件mysql2.properties中
3.使用Properties类完成对mysql2.properties的读取并修改某个key-val
Properties();//创建//1.如果该文件没有key
tab.length;SuppressWarnings(unchecked)EntryK,V
null;}*/properties.setProperty(charset,
utf8);properties.setProperty(user,
unicode码值properties.setProperty(pwd,
888888);//底层就是hashTable所以set就是替换K-V//将k-v
FileOutputStream(src\\mysql2.properties),
helloworld);//comments代表注释System.out.println(保存配置文件成功~);}
作为专业的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