使用RandomAccessFile有时,写入文件时,会成乱码,原因是由于字符串编码不一致造成的,在写入的时候,加入转码后,在获取字节即可,
代码如下:
public static void solveData()throws Exception{
RandomAccessFile r=new RandomAccessFile("data.txt", "rw");//读取一个文件
RandomAccessFile w=new RandomAccessFile("D://result.txt", "rw");//判断写入另一个文件
String temp="";
Pattern p=Pattern.compile("\\((.+?)\\)");//匹配()
int count=0;
while((temp=r.readLine())!=null){
Matcher m=p.matcher(temp);
//System.out.println(m.find());
StringBuffer sb=new StringBuffer();
while(m.find()){
String pr=m.group();
sb.append(" ").append(pr).append(" \n");
}
if(sb.toString().trim().length()>0){
String h=new String((temp+sb.toString()).getBytes("iso-8859-1"),"UTF-8");//加入乱码控制
System.out.println(h);//输出是否为正常编码
w.write(h.getBytes());//获取字节输出
count++;
}
}
r.close();
w.close();
System.out.println("本次,检测共有"+count+"条数据");
}
如果遇到乱码异常,可在写入时进行适当转码即可。
分享到:
相关推荐
给定的示例代码展示了如何使用 `RandomAccessFile` 来写入和读取包含中文字符的对象到文件中,并尝试解决乱码问题。下面将详细分析这段代码: 1. **创建文件对象**: ```java File f = new File("k:\\c.txt"); `...
- 工作原理:该方法使用修改后的UTF-8编码方式写入字符串。首先写入两个字节表示后续字节数量,接着按照UTF-8编码方式写入每个字符。 - 示例代码: ```java String content = "你好世界"; raf.writeUTF(content...
9. 再次使用seek()方法回到插入位置,然后使用write()方法将新的字符串内容写入文件。 10. 最后,再次使用while循环将插入点之后的内容从临时文件追加回原文件位置。 11. 每完成一个操作,都要确保正确关闭...
值得注意的是,RandomAccessFile不擅长处理字符和字符串,因为它是以字节为单位操作的。如果要处理字符数据,特别是包含多字节编码(如UTF-8)的文本,可能会遇到乱码问题。对于这种情况,建议使用InputStreamReader...
4. 使用`readChar()`方法逐个读取文件中的字符,构建字符串并显示。 总的来说,这个示例旨在展示如何在JSP中正确处理文件中的中文字符,通过`writeChars()`和`readChar()`方法避免乱码问题。在实际开发中,理解这些...
这个方法首先读取文件中的所有内容,然后使用`StringBuffer`构建新的文件内容,在找到需要替换的字符串时将其替换为指定的新字符串,最后重新写入文件。 ### 3. 异常处理 在文件操作过程中,异常处理非常重要。...
3. **写入操作**:对应读取操作,类中应有写入方法,用于将字符串或者字符数组按照指定编码写入文件,确保写入的中文字符被正确编码。 4. **大文件处理**:V1.4版本增加了对大文件的处理能力,这可能意味着类采用了...
`FileWriter`适用于写入文本文件,它将字符串转换为字符流写入文件。 ```java FileWriter fw = new FileWriter("path/to/your/file.txt"); fw.write("Hello, World!"); ``` ### 文件读写注意事项 - **资源管理**:...
静态字符串通常是指在编译时期就确定下来的字符串,可以直接在代码中使用。 ### 正则表达式 正则表达式是一种强大的文本匹配工具,Java通过`java.util.regex`包提供了对正则表达式的支持。 ### StringBuilder 和 ...
2. **StringWriter**:用于将数据写入字符串中。 3. **FileWriter**:用于将数据写入文件中。 4. **PipedWriter**:管道输出流,与`PipedOutputStream`相似。 #### 四、流之间的转换 Java还提供了流之间的转换方法...
- **3.1.2 处理汉字信息**:解决中文乱码问题,通常涉及到设置正确的字符编码。 - **3.1.3 常用方法举例**:如getParameter()方法用于获取参数值。 - **3.1.4 用户注册**:利用request对象处理用户提交的注册信息...