花几千上万学习Java,真没须要!(三十八)
https://i-blog.csdnimg.cn/direct/1c102f90fe254edcaf642851092d91b0.pnghttps://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]