ToB企服应用市场:ToB评测及商务社交产业平台

标题: 花几千上万学习Java,真没须要!(三十八) [打印本页]

作者: 老婆出轨    时间: 2024-8-3 04:17
标题: 花几千上万学习Java,真没须要!(三十八)

 

 

 

 

 

测试代码1:
  1. package iotest.com;
  2. import java.nio.charset.StandardCharsets;  
  3. import java.io.UnsupportedEncodingException;  
  4.   
  5. public class StringByteConversion {  
  6.   
  7.     public static void main(String[] args) throws UnsupportedEncodingException {  
  8.         // 原始字符串  
  9.         String originalString = "Hello, 世界!";  
  10.   
  11.         byte[] defaultBytes = originalString.getBytes();  
  12.                 String defaultDecodedString = new String(defaultBytes);  
  13.                 System.out.println("默认字符集编码后解码: " + defaultDecodedString);  
  14.   
  15.         // 使用指定的字符集(UTF-8)编码字符串  
  16.         byte[] utf8Bytes = originalString.getBytes(StandardCharsets.UTF_8.name());  
  17.         String utf8DecodedString = new String(utf8Bytes, StandardCharsets.UTF_8.name());  
  18.         System.out.println("UTF-8编码后解码: " + utf8DecodedString);  
  19.   
  20.         // 尝试使用ISO-8859-1(不支持中文)编码和解码字符串,以展示可能的乱码  
  21.         try {  
  22.             byte[] isoBytes = originalString.getBytes("ISO-8859-1");  
  23.             String isoDecodedString = new String(isoBytes, "ISO-8859-1");  
  24.             System.out.println("ISO-8859-1编码后解码(可能导致乱码): " + isoDecodedString);  
  25.         } catch (UnsupportedEncodingException e) {  
  26.             e.printStackTrace();  
  27.         }  
  28.     }  
  29. }
复制代码
运行结果如下:
 

 
测试代码2:
  1. package iotest.com;
  2. import java.io.ByteArrayInputStream;  
  3. import java.io.ByteArrayOutputStream;  
  4. import java.io.IOException;  
  5. import java.io.InputStream;  
  6. import java.io.InputStreamReader;   
  7. import java.io.OutputStreamWriter;  
  8.   
  9. public class StreamMergerExample {  
  10.     public static void main(String[] args) {  
  11.         try {  
  12.             // 创建一个ByteArrayOutputStream捕获写入的字节  
  13.             ByteArrayOutputStream byteStream = new ByteArrayOutputStream();  
  14.   
  15.             // 使用UTF-8字符编码创建OutputStreamWriter  
  16.             OutputStreamWriter writer = new OutputStreamWriter(byteStream, "UTF-8");  
  17.   
  18.             // 写入文本  
  19.             writer.write("Hello, 世界!");  
  20.   
  21.             // 刷新OutputStreamWriter,确保所有内容都被写入到底层ByteArrayOutputStream  
  22.             writer.flush();  
  23.   
  24.             // 关闭OutputStreamWriter
  25.             // writer.close(); // 如果不打算重用byteStream,可以调用close()  
  26.   
  27.             // 读取需要将其转换为ByteArrayInputStream  
  28.             InputStream inputStream = new ByteArrayInputStream(byteStream.toByteArray());  
  29.   
  30.             // 使用UTF-8字符编码(与写入时相同)创建InputStreamReader  
  31.             InputStreamReader reader = new InputStreamReader(inputStream, "UTF-8");  
  32.   
  33.             // 可以用BufferedReader读取  
  34.             int c;  
  35.             while ((c = reader.read()) != -1) {  
  36.                 // 打印int的字符表示  
  37.                 if (c >= 0 && c <= 0xFFFF) { // 有效性检查(Java中的char是16位的)  
  38.                     System.out.print((char) c);  
  39.                 }  
  40.             }  
  41.   
  42.            //如果使用的是包装流的类(如BufferedReader),则应该关闭。  
  43.   
  44.             System.out.println("\n读取完成。");  
  45.   
  46.         } catch (IOException e) {  
  47.             e.printStackTrace();  
  48.         }  
  49.     }  
  50. }
复制代码
运行结果如下:
 

测试代码3:
  1. package iotest.com;
  2. import java.io.BufferedWriter;  
  3. import java.io.FileWriter;  
  4. import java.io.IOException;  
  5. public class WriterExample {
  6.     public static void main(String[] args) {
  7.         try {
  8.             // 创建一个BufferedWriter对象写入文件
  9.             BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"));
  10.             // 写一个字符
  11.             writer.write('A');
  12.             
  13.             // 写入一个字符数组
  14.             char[] charArray = {'B', 'C', 'D'};
  15.             writer.write(charArray);
  16.             // 写入字符数组的一部分
  17.             writer.write(charArray, 1, 2);
  18.             // 刷新流
  19.             writer.flush();
  20.             // 关闭流
  21.             writer.close();
  22.         } catch (IOException e) {
  23.             e.printStackTrace();
  24.         }
  25.     }
  26. }
复制代码
测试代码4:
  1. package iotest.com;
  2. import java.io.BufferedReader;  
  3. import java.io.BufferedWriter;   
  4. import java.io.FileInputStream;  
  5. import java.io.FileOutputStream;  
  6. import java.io.IOException;  
  7. import java.io.InputStreamReader;  
  8. import java.io.OutputStreamWriter;  
  9.   
  10. public class FileReadWriteUTF8Example {  
  11.     public static void main(String[] args) {  
  12.         // 指定文件路径  
  13.         String filePath = "E:\\Test\\a.txt";  
  14.   
  15.         // 写入文件,使用UTF-8编码  
  16.         try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath), "UTF-8"))) {  
  17.             String content = "这是一段测试文本,使用UTF-8编码写入。默认使用平台的默认字符编码。如果需要在不同平台间共享文件,或者文件包含特殊字符(如中文),使用显式的字符编码,如UTF-8。";  
  18.             writer.write(content);  
  19.             System.out.println("写入成功。");  
  20.         } catch (IOException e) {  
  21.             e.printStackTrace();  
  22.         }  
  23.   
  24.         // 读取文件,使用UTF-8编码,并打印到控制台  
  25.         try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF-8"))) {  
  26.             String line;  
  27.             while ((line = reader.readLine()) != null) {  
  28.                 System.out.println(line);  
  29.             }  
  30.         } catch (IOException e) {  
  31.             e.printStackTrace();  
  32.         }  
  33.     }  
  34. }
复制代码
运行结果如下:
 

测试代码5:
  1. package iotest.com;
  2. import java.io.FileReader;
  3. import java.io.IOException;
  4. public class FileReaderTest {  
  5.     public static void main(String[] args) {  
  6.         try {  
  7.             // 创建一个FileReader对象读取文件  
  8.             FileReader reader = new FileReader("E:\\Test\\a.txt");  
  9.               
  10.             // 使用read方法一次读取一个字符数据  
  11.             int charData;  
  12.             while ((charData = reader.read()) != -1) {  
  13.                 System.out.print((char) charData); // 打印读取的字符  
  14.             }  
  15.             System.out.println(); //方法换行  
  16.   
  17.             // 使用read一次读取一个字符数组数据  
  18.             char[] charArray = new char[3];  
  19.             int numCharsRead;  
  20.             
  21.             //使用read方法逐个读取字符并打印出来,直到文件末尾(-1)。
  22.             while ((numCharsRead = reader.read(charArray)) != -1) {  
  23.                 // 只打印实际读取的字符数  
  24.                 for (int i = 0; i < numCharsRead; i++) {  
  25.                     System.out.print(charArray[i]);  
  26.                 }  
  27.             }  
  28.   
  29.             // 关闭流  
  30.             reader.close();  
  31.         } catch (IOException e) {  
  32.             e.printStackTrace();  
  33.         }  
  34.     }  
  35. }
复制代码
测试代码6:Copy文本。
  1. package iotest.com;
  2. import java.io.BufferedReader;  
  3. import java.io.BufferedWriter;  
  4. import java.io.FileReader;  
  5. import java.io.FileWriter;  
  6. import java.io.IOException;  
  7.   //readLine()方法读取一行文本。
  8.   //它读取字符直到遇到换行符(\n)、回车符(\r)、回车后紧跟换行符(\r\n)或到达文件末尾。
  9.   //返回包含该行内容的字符串,但不包括任何行终止符。
  10.   //如果已到达流的末尾且没有更多的行可供读取,则返回null。
  11.   //readLine()为按行读取文本文件内容的理想选择。
  12. public class FileCopyTest {  
  13.     public static void main(String[] args) {  
  14.         String sourceFile = "E:\\Test\\a.txt";  
  15.         String destFile = "D:\\AA\\destination.txt";  
  16.   
  17.         BufferedReader br = null;  
  18.         BufferedWriter bw = null;  
  19.   
  20.         try {  
  21.             br = new BufferedReader(new FileReader(sourceFile));  
  22.             bw = new BufferedWriter(new FileWriter(destFile));  
  23.   
  24.             String line;  
  25.             //readLine()按行读取源文件的内容
  26.             while ((line = br.readLine()) != null) {  
  27.                 bw.write(line);  
  28.                 bw.newLine(); // 写入行分隔符  
  29.             }  
  30.   
  31.             System.out.println("文件复制成功!");  
  32.   
  33.         } catch (IOException e) {  
  34.             e.printStackTrace();  
  35.             System.out.println("文件复制失败!");  
  36.         } finally {  
  37.             try {  
  38.                 if (br != null) {  
  39.                     br.close();  
  40.                 }  
  41.                 if (bw != null) {  
  42.                     bw.close();  
  43.                 }  
  44.             } catch (IOException e) {  
  45.                 e.printStackTrace();  
  46.             }  
  47.         }  
  48.     }  
  49. }
复制代码
测试代码7:字符缓冲流复制文件
  1. package iotest.com;
  2. import java.io.FileReader;  
  3. import java.io.FileWriter;  
  4. import java.io.IOException;  
  5. public class FileCopyExample {  
  6.     public static void main(String[] args) {  
  7.         String sourceFile = "D:\\AA\\a.txt";  
  8.         String destFile = "E:\\Test\\a.txt";  
  9.   
  10.         // 确保目标目录存在
  11.   
  12.         FileReader fileReader = null;  
  13.         FileWriter fileWriter = null;  
  14.   
  15.         try {  
  16.             fileReader = new FileReader(sourceFile);  
  17.             fileWriter = new FileWriter(destFile);  
  18.   
  19.             char[] buffer = new char[1024]; // 使用一个缓冲区存储读取的字符  
  20.             int numCharsRead;  
  21.   
  22.             // 循环读取文件直到到达末尾  
  23.             while ((numCharsRead = fileReader.read(buffer)) != -1) {  
  24.                 // 写入实际读取的字符数到目标文件  
  25.                 fileWriter.write(buffer, 0, numCharsRead);  
  26.             }  
  27.   
  28.             System.out.println("文件复制成功!");  
  29.   
  30.         } catch (IOException e) {  
  31.             e.printStackTrace();  
  32.             System.out.println("文件复制失败!");  
  33.         } finally {  
  34.             // 关闭资源  
  35.             try {  
  36.                 if (fileReader != null) {  
  37.                     fileReader.close();  
  38.                 }  
  39.                 if (fileWriter != null) {  
  40.                     fileWriter.close();  
  41.                 }  
  42.             } catch (IOException e) {  
  43.                 e.printStackTrace();  
  44.             }  
  45.         }  
  46.     }  
  47. }
复制代码
 
 
 
 
 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4