商城网站模板框架,大型 网站的建设 阶段,4399小游戏电脑版,牟平建设企业网站字符流练习 练习1#xff1a;文件夹拷贝1.1 需求1.2 代码实现1.3 输出结果 练习2#xff1a;文件加密与解密2.1 需求2.2 代码实现2.3 输出结果 练习3#xff1a;修改文件数据#xff08;常规方法#xff09;3.1 需求3.2 代码实现3.3 输出结果 练习4#xff1a;修改文件数… 字符流练习 练习1文件夹拷贝1.1 需求1.2 代码实现1.3 输出结果 练习2文件加密与解密2.1 需求2.2 代码实现2.3 输出结果 练习3修改文件数据常规方法3.1 需求3.2 代码实现3.3 输出结果 练习4修改文件数据省略方法4.1 需求4.2 代码实现4.3 输出结果 练习1文件夹拷贝
1.1 需求
需求拷贝一个文件夹考虑子文件夹
拷贝的文件夹D:\QQ拷贝的位置D:\File
1.2 代码实现
package text.IOStream.FileWrite.FileWrite02;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;/*拷贝
需求拷贝一个文件夹考虑子文件夹拷贝的文件夹D:\QQ
拷贝的位置D:\File*/
public class FileWrite02 {public static void main(String[] args) throws IOException {//创建数据源File startFile new File(D:\\QQ);//创建目的地File endFile new File(D:\\File);copy(startFile, endFile);}/** 作用拷贝文件夹* 参数一数据源* 参数二目的地* */private static void copy(File startFile, File endFile) throws IOException {//先创建目的地文件当目的地文件存在时则创建失败endFile.mkdir();//进入文件夹File[] files startFile.listFiles();//遍历数组for (File file : files) {//判断该file是文件还是文件夹if (file.isFile()) {//如果是文件则拷贝拷贝用字节流//创建字节输入流对象FileInputStream fis new FileInputStream(startFile);//创建字节输出流对象//new File(endFile, startFile.getName())指得是新创建个文件对象//参数一指要拷贝的目的地的文件//参数二指要拷贝目的地文件的名字FileOutputStream fos new FileOutputStream(new File(endFile, startFile.getName()));//创建了个字节数组加快拷贝效率byte[] bytes new byte[1024 * 1024 * 5];int b;//定义一个变量记录每次读取的数据的个数while ((b fis.read()) ! -1) {fos.write(bytes, 0, b);}//释放资源(先开的流后关)fos.close();fis.close();} else {//如果是文件夹则递归copy(startFile, new File(endFile, startFile.getName()));}}}
}
1.3 输出结果 练习2文件加密与解密
2.1 需求
为了保证文件的安全性就需要对原始文件进行加密存储再使用的时候再对其进行解密处理。
加密原理: 对原始文件中的每一个字节数据进行更改然后将更改以后的数据存储到新的文件中。解密原理: 读取加密之后的文件按照加密的规则反向操作变成原始文件。 ^ : 异或 两边相同false 两边不同true 0false1true100:110010010: 1010100与10异或1100100^ 1010__________1101110110与10异或1101110^ 1010__________11001002.2 代码实现 package text.IOStream.FileWrite.FileWrite03;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;/*文件加密
为了保证文件的安全性就需要对原始文件进行加密存储再使用的时候再对其进行解密处理。
加密原理:对原始文件中的每一个字节数据进行更改然后将更改以后的数据存储到新的文件中。
解密原理:读取加密之后的文件按照加密的规则反向操作变成原始文件。^ : 异或两边相同false两边不同true0false1true100:110010010: 1010100与10异或1100100^ 1010__________1101110110与10异或1101110^ 1010__________1100100*/
public class FileWrite03 {public static void main(String[] args) throws IOException {//创建对象并关联原始文件FileInputStream fis1 new FileInputStream(D:\\JavaCode\\code\\codeText01\\src\\text\\IOStream\\FileWrite\\FileWrite03\\a.txt);//创建对象并关联加密文件FileOutputStream fos1 new FileOutputStream(D:\\JavaCode\\code\\codeText01\\src\\text\\IOStream\\FileWrite\\FileWrite03\\b.txt);//创建对象并关联加密文件FileInputStream fis2 new FileInputStream(D:\\JavaCode\\code\\codeText01\\src\\text\\IOStream\\FileWrite\\FileWrite03\\b.txt);//创建对象并关联解密文件FileOutputStream fos2 new FileOutputStream(D:\\JavaCode\\code\\codeText01\\src\\text\\IOStream\\FileWrite\\FileWrite03\\c.txt);//加密ency(fis1, fos1);//解密redu(fis2, fos2);}//解密private static void redu(FileInputStream fis1, FileOutputStream fos2) throws IOException {int b;while ((b fis1.read()) ! -1) {fos2.write(b ^ 10);}//释放资源fos2.close();fis1.close();}//加密private static void ency(FileInputStream fis, FileOutputStream fos) throws IOException {int b;while ((b fis.read()) ! -1) {fos.write(b ^ 10);}//释放资源fos.close();fis.close();}
}
2.3 输出结果
原来的文件a.txt 加密后的文件b.txt 解密后的文件c.txt
练习3修改文件数据常规方法
3.1 需求
需求
文本文件中有的数据 2-1-9-4-7-8 将文件中的数据进行排序变成以下的数据 1-2-4-7-8-9
细节1文件中的数据不要换行
细节2文件可能有隐藏的bom头3.2 代码实现
package text.IOStream.FileWrite.FileWrite04;import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;/*修改文件中的数据
需求文本文件中有的数据2-1-9-4-7-8将文件中的数据进行排序变成以下的数据1-2-4-7-8-9细节1文件中的数据不要换行
细节2文件可能有隐藏的bom头*/
public class FileWrite04 {public static void main(String[] args) throws IOException {//创建对象FileReader fr new FileReader(D:\\JavaCode\\code\\codeText01\\src\\text\\IOStream\\FileWrite\\FileWrite04\\a.txt);//排序//创建StringBuilder对象用于存储数据StringBuilder sb new StringBuilder();//创建变量记录读取的数据个数int b;while ((b fr.read()) ! -1) {sb.append((char) b);}fr.close();//将StringBuilder里的数据转换成字符串方便截取String str sb.toString();//截取字符串String[] split str.split(-);//创建集合用于存储数字ArrayListInteger list new ArrayList();//遍历数组将数字存入集合for (String s : split) {int num Integer.parseInt(s);list.add(num);}//排序集合里的数字Collections.sort(list);//写出FileWriter fw new FileWriter(D:\\JavaCode\\code\\codeText01\\src\\text\\IOStream\\FileWrite\\FileWrite04\\a.txt);//遍历集合for (int i 0; i list.size(); i) {if (i list.size() - 1) {fw.write(list.get(i) );//加的原因是防止写入字符对应的数字} else {fw.write(list.get(i) -);}}fw.close();}
}
3.3 输出结果 原来文件数据 现在文件数据
练习4修改文件数据省略方法
4.1 需求
需求
文本文件中有的数据 2-1-9-4-7-8 将文件中的数据进行排序变成以下的数据 1-2-4-7-8-9
细节1文件中的数据不要换行
细节2文件可能有隐藏的bom头4.2 代码实现
package text.IOStream.FileWrite.FileWrite05;import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import java.util.function.Function;/*修改文件中的数据
需求
文本文件中有的数据
2-1-9-4-7-8
将文件中的数据进行排序变成以下的数据
1-2-4-7-8-9细节1文件中的数据不要换行
细节2文件可能有隐藏的bom头
*/
public class FileWrite05 {public static void main(String[] args) throws IOException {//创建对象FileReader fr new FileReader(D:\\JavaCode\\code\\codeText01\\src\\text\\IOStream\\FileWrite\\FileWrite05\\a.txt);//创建StringBuilder对象用于存储数据StringBuilder sb new StringBuilder();//创建变量记录读取的数据个数int b;while ((b fr.read()) ! -1) {sb.append((char) b);}fr.close();//排序Integer[] array Arrays.stream(sb.toString().split(-))//Stream流将StringBuilder里的数据转换成字符串并分割字符串.map(new FunctionString, Integer() {Overridepublic Integer apply(String s) {return Integer.parseInt(s);}})//格式转换.sorted()//排序.toArray(Integer[]::new);//利用方法引用转换成数组//写出FileWriter fw new FileWriter(D:\\JavaCode\\code\\codeText01\\src\\text\\IOStream\\FileWrite\\FileWrite05\\a.txt);String replace Arrays.toString(array).replace(, , -);//将排序后的数组中的 , 替换成 -String substring replace.substring(1, replace.length() - 1); //截取字符串截取第二个到倒数第二个fw.write(substring);//写入数据fw.close();}
}
4.3 输出结果
原来的文件数据 现在的文件数据