Java:bufferedReader.readLine()读取文件换行问题

本文介绍了使用Java编程语言通过BufferedReader读取文件内容,并将其正常换行后复制到系统剪贴板的方法。重点讨论了编码格式、文件存在判断和系统剪贴板操作。

代码实现读取到的内容正常换行,并将内容复制到系统剪贴板当中去。

public static void ReadAlart()
	{
		try {
			String encoding="utf-8";
			File file=new File("Alart.txt");
			if(file.isFile() && file.exists()){ //判断文件是否存在
				InputStreamReader read = new InputStreamReader(
						new FileInputStream(file),encoding);//考虑到编码格式
				BufferedReader bufferedReader = new BufferedReader(read);
				String lineTxt = "";
				String AlartTxt="";
				while((lineTxt = bufferedReader.readLine()) != null){
					lineTxt+='\n';
					AlartTxt+=lineTxt;
				}
				//System.out.println(AlartTxt);

				Clipboard sysClip = Toolkit.getDefaultToolkit().getSystemClipboard();
				Transferable text = new StringSelection(AlartTxt);
				sysClip.setContents(text, null);
				read.close();
			}else{
				System.out.println("找不到指定的文件");
			}
		} catch (Exception e) {
			System.out.println("读取文件内容出错");
			e.printStackTrace();
		}
	}  


Java:bufferedReader.readLine()读取文件换行问题

FileInputStream来读取,完全没有问题,他是读取字节形式的,所以读到中文字符的时候,字节流就会出现乱码,所以必去用要字符流来读取,在用FileInputStream读取文件是用他里面read()方法来读取的,是一口气直接全部读完的,就会留下原来文件换行的脚印,但是用BufferedReader来读取是用readLine()来读取的,意思是一行一行的来读取,这样当读到回车符的时候,就先返回给字符串,然后再进行下一行的读取!


在使用 `BufferedReader` 读取包含中文字符的文件时,如果文件中存在换行符,正确处理换行和中文字符的关键在于确保使用正确的字符编码来读取文件内容。`BufferedReader` 本身是字符流,能够很好地处理字符编码问题,只要在构造 `InputStreamReader` 时指定了正确的编码格式,就能避免乱码问题。 ### 使用 `BufferedReader` 读取中文字符与换行符的正确方式 当使用 `BufferedReader` 读取包含中文字符的文件时,应确保在构造 `InputStreamReader` 时指定文件的编码格式(如 UTF-8)。这样可以确保中文字符被正确解码,同时 `readLine()` 方法会自动识别换行符(如 `\n` 或 `\r\n`),并按行读取内容。 示例代码如下: ```java import java.io.*; public class ReadChineseFile { public static void main(String[] args) { String filePath = "path/to/your/file.txt"; 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(); } } } ``` 在上述代码中: - `InputStreamReader` 的构造函数接受一个 `FileInputStream` 和一个编码名称(如 `"UTF-8"`),确保中文字符被正确解码。 - `BufferedReader.readLine()` 方法会自动识别换行符,并返回不包含换行符的字符串,从而避免了手动处理换行符的复杂性[^1]。 ### 换行符的处理 `BufferedReader.readLine()` 方法会自动处理常见的换行符格式,包括: - Unix/Linux 系统中的 `\n` - Windows 系统中的 `\r\n` - 旧版 Mac 系统中的 `\r` 因此,无论文件是在哪种系统下创建的,只要使用 `readLine()` 方法读取,都能正确识别换行符并提取每一行的内容。 ### 中文字符乱码问题的根源 如果直接使用 `FileInputStream` 而不通过 `InputStreamReader` 指定编码,或未正确指定编码格式,读取中文字符时会出现乱码。这是因为字节流无法自动识别字符编码,必须通过字符流进行解码。`BufferedReader` 作为字符流的一种,结合 `InputStreamReader` 并指定正确的编码后,可以有效解决中文字符的读取问题[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值