老婆出轨 发表于 2024-8-3 04:17:49

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

https://i-blog.csdnimg.cn/direct/1c102f90fe254edcaf642851092d91b0.png
https://i-blog.csdnimg.cn/direct/258375f7265f49b1ba0e66a44da7648c.png 
https://i-blog.csdnimg.cn/direct/4014cf21ff254df19b34d5df129ad1f6.png 
https://i-blog.csdnimg.cn/direct/938fbbcbc94a4aba855dd7753a8e60a1.png 
https://i-blog.csdnimg.cn/direct/d4623782674e4cfe9141f5855c0843b2.png 
https://i-blog.csdnimg.cn/direct/06c92e7641e843659affce6361a56ab3.png 
测试代码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();
      }

    }
} 运行结果如下:
https://i-blog.csdnimg.cn/direct/9724f97695d745ebb6e6dee586ef759e.png 
 
测试代码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();
      }
    }
} 运行结果如下:
https://i-blog.csdnimg.cn/direct/c13f4fdb59614ad794347a5ea3e9ba47.png 
测试代码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();
      }
    }
} 运行结果如下:
https://i-blog.csdnimg.cn/direct/72efc761fad342c688d3bbdabf1cafc9.png 
测试代码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;
            int numCharsRead;
            
            //使用read方法逐个读取字符并打印出来,直到文件末尾(-1)。
            while ((numCharsRead = reader.read(charArray)) != -1) {
                // 只打印实际读取的字符数
                for (int i = 0; i < numCharsRead; i++) {
                  System.out.print(charArray);
                }
            }

            // 关闭流
            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; // 使用一个缓冲区存储读取的字符
            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();
            }
      }
    }
}  
 
 
 
 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 花几千上万学习Java,真没须要!(三十八)