当前位置: 首页 > news >正文

花几千上万学习Java,真没必要!(三十八)

 

 

 

 

 

测试代码1:

package iotest.com;
import java.nio.charset.StandardCharsets;  
import java.io.UnsupportedEncodingException;  public class StringByteConversion {  public static void main(String[] args) throws UnsupportedEncodingException {  // 原始字符串  String originalString = "Hello, 世界!";  byte[] defaultBytes = originalString.getBytes();  String defaultDecodedString = new String(defaultBytes);  System.out.println("默认字符集编码后解码: " + defaultDecodedString);  // 使用指定的字符集(UTF-8)编码字符串  byte[] utf8Bytes = originalString.getBytes(StandardCharsets.UTF_8.name());  String utf8DecodedString = new String(utf8Bytes, StandardCharsets.UTF_8.name());  System.out.println("UTF-8编码后解码: " + utf8DecodedString);  // 尝试使用ISO-8859-1(不支持中文)编码和解码字符串,以展示可能的乱码  try {  byte[] isoBytes = originalString.getBytes("ISO-8859-1");  String isoDecodedString = new String(isoBytes, "ISO-8859-1");  System.out.println("ISO-8859-1编码后解码(可能导致乱码): " + isoDecodedString);  } catch (UnsupportedEncodingException e) {  e.printStackTrace();  }  }  
}

运行结果如下:

 

 

测试代码2:

package iotest.com;
import java.io.ByteArrayInputStream;  
import java.io.ByteArrayOutputStream;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.InputStreamReader;   
import java.io.OutputStreamWriter;  public class StreamMergerExample {  public static void main(String[] args) {  try {  // 创建一个ByteArrayOutputStream捕获写入的字节  ByteArrayOutputStream byteStream = new ByteArrayOutputStream();  // 使用UTF-8字符编码创建OutputStreamWriter  OutputStreamWriter writer = new OutputStreamWriter(byteStream, "UTF-8");  // 写入文本  writer.write("Hello, 世界!");  // 刷新OutputStreamWriter,确保所有内容都被写入到底层ByteArrayOutputStream  writer.flush();  // 关闭OutputStreamWriter// writer.close(); // 如果不打算重用byteStream,可以调用close()  // 读取需要将其转换为ByteArrayInputStream  InputStream inputStream = new ByteArrayInputStream(byteStream.toByteArray());  // 使用UTF-8字符编码(与写入时相同)创建InputStreamReader  InputStreamReader reader = new InputStreamReader(inputStream, "UTF-8");  // 可以用BufferedReader读取  int c;  while ((c = reader.read()) != -1) {  // 打印int的字符表示  if (c >= 0 && c <= 0xFFFF) { // 有效性检查(Java中的char是16位的)  System.out.print((char) c);  }  }  //如果使用的是包装流的类(如BufferedReader),则应该关闭。  System.out.println("\n读取完成。");  } catch (IOException e) {  e.printStackTrace();  }  }  
}

运行结果如下:

 

测试代码3:

package iotest.com;
import java.io.BufferedWriter;  
import java.io.FileWriter;  
import java.io.IOException;  
public class WriterExample {public static void main(String[] args) {try {// 创建一个BufferedWriter对象写入文件BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"));// 写一个字符writer.write('A');// 写入一个字符数组char[] charArray = {'B', 'C', 'D'};writer.write(charArray);// 写入字符数组的一部分writer.write(charArray, 1, 2);// 刷新流writer.flush();// 关闭流writer.close();} catch (IOException e) {e.printStackTrace();}}
}

测试代码4:

package iotest.com;
import java.io.BufferedReader;  
import java.io.BufferedWriter;   
import java.io.FileInputStream;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.InputStreamReader;  
import java.io.OutputStreamWriter;  public class FileReadWriteUTF8Example {  public static void main(String[] args) {  // 指定文件路径  String filePath = "E:\\Test\\a.txt";  // 写入文件,使用UTF-8编码  try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath), "UTF-8"))) {  String content = "这是一段测试文本,使用UTF-8编码写入。默认使用平台的默认字符编码。如果需要在不同平台间共享文件,或者文件包含特殊字符(如中文),使用显式的字符编码,如UTF-8。";  writer.write(content);  System.out.println("写入成功。");  } catch (IOException e) {  e.printStackTrace();  }  // 读取文件,使用UTF-8编码,并打印到控制台  try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF-8"))) {  String line;  while ((line = reader.readLine()) != null) {  System.out.println(line);  }  } catch (IOException e) {  e.printStackTrace();  }  }  
}

运行结果如下:

 

测试代码5:

package iotest.com;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderTest {  public static void main(String[] args) {  try {  // 创建一个FileReader对象读取文件  FileReader reader = new FileReader("E:\\Test\\a.txt");  // 使用read方法一次读取一个字符数据  int charData;  while ((charData = reader.read()) != -1) {  System.out.print((char) charData); // 打印读取的字符  }  System.out.println(); //方法换行  // 使用read一次读取一个字符数组数据  char[] charArray = new char[3];  int numCharsRead;  //使用read方法逐个读取字符并打印出来,直到文件末尾(-1)。while ((numCharsRead = reader.read(charArray)) != -1) {  // 只打印实际读取的字符数  for (int i = 0; i < numCharsRead; i++) {  System.out.print(charArray[i]);  }  }  // 关闭流  reader.close();  } catch (IOException e) {  e.printStackTrace();  }  }  
}

测试代码6:Copy文本。

package iotest.com;
import java.io.BufferedReader;  
import java.io.BufferedWriter;  
import java.io.FileReader;  
import java.io.FileWriter;  
import java.io.IOException;  //readLine()方法读取一行文本。//它读取字符直到遇到换行符(\n)、回车符(\r)、回车后紧跟换行符(\r\n)或到达文件末尾。//返回包含该行内容的字符串,但不包括任何行终止符。//如果已到达流的末尾且没有更多的行可供读取,则返回null。//readLine()为按行读取文本文件内容的理想选择。
public class FileCopyTest {  public static void main(String[] args) {  String sourceFile = "E:\\Test\\a.txt";  String destFile = "D:\\AA\\destination.txt";  BufferedReader br = null;  BufferedWriter bw = null;  try {  br = new BufferedReader(new FileReader(sourceFile));  bw = new BufferedWriter(new FileWriter(destFile));  String line;  //readLine()按行读取源文件的内容while ((line = br.readLine()) != null) {  bw.write(line);  bw.newLine(); // 写入行分隔符  }  System.out.println("文件复制成功!");  } catch (IOException e) {  e.printStackTrace();  System.out.println("文件复制失败!");  } finally {  try {  if (br != null) {  br.close();  }  if (bw != null) {  bw.close();  }  } catch (IOException e) {  e.printStackTrace();  }  }  }  
}

测试代码7:字符缓冲流复制文件

package iotest.com;
import java.io.FileReader;  
import java.io.FileWriter;  
import java.io.IOException;  
public class FileCopyExample {  public static void main(String[] args) {  String sourceFile = "D:\\AA\\a.txt";  String destFile = "E:\\Test\\a.txt";  // 确保目标目录存在FileReader fileReader = null;  FileWriter fileWriter = null;  try {  fileReader = new FileReader(sourceFile);  fileWriter = new FileWriter(destFile);  char[] buffer = new char[1024]; // 使用一个缓冲区存储读取的字符  int numCharsRead;  // 循环读取文件直到到达末尾  while ((numCharsRead = fileReader.read(buffer)) != -1) {  // 写入实际读取的字符数到目标文件  fileWriter.write(buffer, 0, numCharsRead);  }  System.out.println("文件复制成功!");  } catch (IOException e) {  e.printStackTrace();  System.out.println("文件复制失败!");  } finally {  // 关闭资源  try {  if (fileReader != null) {  fileReader.close();  }  if (fileWriter != null) {  fileWriter.close();  }  } catch (IOException e) {  e.printStackTrace();  }  }  }  
}

 

 

 

 

 

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Zotero的探索之路
  • 【网络安全】副业兼职日入12k,网安人不接私活就太可惜了!
  • 【学术会议征稿】第四届高性能计算与通信工程国际学术会议(HPCCE 2024)
  • app逆向抓包技巧:ROOT检测绕过
  • 网络6 -- udp_socket 实现 echo服务器
  • Windows Subsystem for Linux——使用宿主机器上的摄像头
  • 浅学爬虫-处理复杂网页
  • 等保测评练习卷22
  • 1.面试准备篇
  • 微信小程序教程009:条件渲染
  • 项目实战——外挂开发(30小时精通C++和外挂实战)
  • IDEA切换分支,会影响当前在跑的项目吗?
  • 【计算机网络】网络基础概念
  • 敏感信息泄露wp
  • 基于距离的多指标决策——TOPSIS
  • SegmentFault for Android 3.0 发布
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • CentOS7简单部署NFS
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • Rancher-k8s加速安装文档
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • Web标准制定过程
  • 缓存与缓冲
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 前端代码风格自动化系列(二)之Commitlint
  • 软件开发学习的5大技巧,你知道吗?
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 思维导图—你不知道的JavaScript中卷
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 我有几个粽子,和一个故事
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • 回归生活:清理微信公众号
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​iOS实时查看App运行日志
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (十八)三元表达式和列表解析
  • (算法)硬币问题
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)VC++中ondraw在什么时候调用的
  • (转载)Google Chrome调试JS
  • .htaccess 强制https 单独排除某个目录
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .Net 6.0 处理跨域的方式
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET使用存储过程实现对数据库的增删改查
  • .NET委托:一个关于C#的睡前故事
  • @我的前任是个极品 微博分析