`
NanguoCoffee
  • 浏览: 51218 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

RandomAccessFile.readLine()读取文件乱码

阅读更多

RandomAccessFile.readLine(): 很有可能会产生乱码。因为它是每读取一个byte就将其转化为char,再将char拼接称为String。对于一个中文,就需要2个byte或者多个byte来表示(不同的编码采用的byte数目不一样),假设为3个byte,那么raf.readLine()则将该中文视为单独的3个char。

应当使用

知道该行的开始和该行的结束(即在两个‘\n’)的指针位置。

通过raf.read(byte[] bs), new String(bs)的方式来获得字符串。

 

分享到:
评论
2 楼 NanguoCoffee 2011-02-15  
见原文:
引用

应当使用
知道该行的开始和该行的结束(即在两个‘\n’)的指针位置。
通过raf.read(byte[] bs), new String(bs)的方式来获得字符串

去换行符之间的字节数组不会少的,按正确的编码来转换是不会出现乱码。

public final String readLine() throws IOException {
StringBuffer input = new StringBuffer();
int c = -1;
boolean eol = false;

while (!eol) {
    switch (c = read()) {
    case -1:
    case '\n':
eol = true;
break;
    case '\r':
eol = true;
long cur = getFilePointer();
if ((read()) != '\n') {
    seek(cur);
}
break;
    default:
input.append((char)c);
break;
    }
}



yuzhu223 写道
按照楼主说的方式,用
raf.read(byte[] b)
读取文件的数据,读出来的全是数字,这些数字有整数,有负数,跟乱码也没什么区别啊

1 楼 yuzhu223 2011-02-14  
按照楼主说的方式,用
raf.read(byte[] b)
读取文件的数据,读出来的全是数字,这些数字有整数,有负数,跟乱码也没什么区别啊

相关推荐

    【IT十八掌徐培成】Java基础第16天-01.RandomAccessFile.zip

    Java编程语言是软件开发领域的重要工具,尤其在企业级应用中占据着主导地位。本教程聚焦于Java中的`...通过观看"Java基础第16天-01.RandomAccessFile.avi"的视频教程,你将能够更深入地了解和运用这一特性。

    RandomAccessFile 解决乱码

    - 使用了错误的编码进行文件读取或写入。 - 不同系统之间的文件传输可能导致编码混淆。 3. **解决乱码的方法**: - 明确指定编码:无论是读取还是写入文件,都应明确指定编码格式。 - 使用统一编码:在项目中...

    RandomAccessFile向文件中写入中文

    `RandomAccessFile`类提供了对文件进行随机访问的能力,它支持读取和写入数据。与`FileInputStream`和`FileOutputStream`等流相比,`RandomAccessFile`提供了一个更灵活的方法来处理文件,因为它允许直接定位到文件...

    java多种读取文件方式

    while ((bytesRead = randomAccessFile.read(bytes)) != -1) { System.out.write(bytes, 0, bytesRead); } ``` - **应用场景**:适合需要在文件中执行随机读写操作的场景,例如数据库应用。 ### 总结 通过...

    java读写文件的方法.pdf

    while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); } catch (IOException e) { e.printStackTrace(); } } /** * 随机读取文件内容 * * @param fileName * 文件名 */ ...

    java 读取文件 文件读取操作

    在Java编程语言中,文件读取是常见的任务,可以用于处理各种类型的数据,如文本、图像、音频等。本文将详细介绍Java中四种不同的文件读取方法:按字节读取、按字符读取、按行读取以及随机读取。 1. **按字节读取...

    基于RandomAccessFile文件分类的小程序

    在文件分类场景中,`RandomAccessFile`可能被用来高效地读取文件内容,检查文件中是否存在配置文件中定义的关键字,以此来决定文件应被放入哪个分类文件夹。 在分类过程中,程序首先会解析`config.xml`配置文件,...

    使用RandomAccessFile流将一个文本文件读出,并导致写入到另一个文件当中。

    在Java编程语言中,`RandomAccessFile`类提供了一种非常灵活的方式来读取和写入文件。它支持随机访问,意味着我们可以直接跳转到文件中的任何位置进行读写操作。下面我们将基于提供的代码片段,详细介绍如何利用`...

    Android文件下载(实现断点续传)

    在断点续传中,我们首先打开目标文件,使用RandomAccessFile的seek()方法定位到已下载的末尾,然后开始从服务器获取新的数据并写入文件。 以下是实现步骤: 1. 初始化下载任务:记录待下载文件的URL、本地存储路径...

    FileRW.rar_文件读取

    除了基本的文件读取,还有其他高级功能,如使用`RandomAccessFile`进行随机访问,或者使用NIO(New IO)包中的`FileChannel`进行高效的大文件读写。`RandomAccessFile`允许你在文件的任何位置进行读写,而`...

    Java RandomAccessFile 指定位置实现文件读取与写入

    Java的`RandomAccessFile`类是Java I/O流体系中的一种特殊类型,它允许程序员以随机访问模式读取和写入文件。与传统的输入/输出流不同,`RandomAccessFile`可以直接定位到文件的任意位置进行读写操作,这对于处理...

    java读取文件方法大全

    while ((line = bufferedReader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (bufferedReader != null) bufferedReader....

    JAVA读取文件方法大全PDF

    ### JAVA读取文件方法大全 在Java编程语言中,读取文件是常见且重要的操作之一。...开发者可以根据实际需求选择最适合的方法来处理文件读取任务。同时,在编写代码时,还需要注意异常处理,确保程序的健壮性和稳定性。

    java 读取文件方法的总结

    while ((line = br.readLine()) != null) { System.out.println(line); } br.close(); ``` 这段代码将逐行打印文件内容。 4. **随机读取文件内容** 如果需要在文件的任意位置开始读取,可以使用`...

    java 读取文件

    while ((line = br.readLine()) != null) { System.out.println(line); } br.close(); ``` 三、按行读取文件内容 `BufferedReader`提供了`readLine()`方法,可以方便地按行读取文本文件。如上例所示,当没有更多...

    java文件读取---写入----输出

    while ((read = bufread.readLine()) != null) { readStr = readStr + read + "\r\n"; } } catch (IOException e) { e.printStackTrace(); } } catch (FileNotFoundException e) { e.printStackTrace(); } ...

    [Java]读取文件方法大全.pdf

    Java 文件读取方法大全 Java 中有多种方式来读取文件,每种方式都有其特点和应用场景。本文将详细介绍四种常见的文件读取方法:按字节读取文件内容、按字符读取文件内容、按行读取文件内容和随机读取文件内容。 一...

    java文件读取方法.pdf

    在Java编程语言中,文件读取是常见的任务,可以用于处理文本文件、二进制文件等。本篇文章将详细介绍四种不同的方法来读取文件内容,包括按字节、字符、行以及随机读取。 首先,**按字节读取文件**是最基础的方式,...

    NIO_RandomAccessFile_多线程_按行读本地CSV文件(java==> google guava包ListenableFuture)

    NIO_RandomAccessFile_多线程读本地CSV文件(java==> google guava包ListenableFuture) reader里有个main函数,更改文件路径后,直接运行即可

Global site tag (gtag.js) - Google Analytics