package java_text; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class text3 { public static void main(String[] args) { try { BufferedReader fis = new BufferedReader(new FileReader("D:\\Java\\JavaSpace\\java_text\\src\\java_text\\Source.txt")); BufferedWriter ois = new BufferedWriter(new FileWriter("D:\\Java\\JavaSpace\\java_text\\src\\java_text\\dost.txt")); String line; int num = 0; while ((line = fis.readLine()) != null) { num++; ois.write(num + ": " + line+"\n"); } fis.close(); ois.close(); } catch (IOException e) { e.printStackTrace(); } } }为什么在dost文件里是乱码
时间: 2024-02-01 18:02:10 浏览: 77
这是因为在写入文件时,没有指定写入文件的编码格式。在这个例子中,文件的编码格式使用的是系统默认值,这可能会导致乱码。为了解决这个问题,你可以在创建 BufferedWriter 对象时,指定写入文件的编码格式,例如:
```
BufferedWriter ois = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:\\Java\\JavaSpace\\java_text\\src\\java_text\\dost.txt"), "UTF-8"));
```
这样写入文件的编码格式就是 UTF-8,而不会出现乱码。
相关问题
逐句解析代码 package com.io.mytest; import java.io.*; import java.util.*; public class test4 { /* 出师表排序 */ public static void main(String[] args) throws IOException { //1.读取数据 BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\linliyou\\Downloads\\csb.txt")); String line; TreeMap<Integer,String> tm = new TreeMap<>(); while ((line = br.readLine()) != null){ String[] arr = line.split("\\."); tm.put(Integer.parseInt(arr[0]),line); } br.close(); //2.写出数据 BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\idea codes\\basic-codes\\result.txt")); Set<Map.Entry<Integer,String>> entries = tm.entrySet(); for (Map.Entry<Integer, String> entry : entries) { String value = entry.getValue(); bw.write(value); bw.newLine(); } bw.close(); } }
这段代码是一个简单的Java程序,主要实现了读取一个文件中的数据并按照一定规则进行排序后写入另一个文件。
代码首先导入了需要的类,包括java.io和java.util。然后定义了一个名为test4的类。
在main方法中,首先创建了一个BufferedReader对象br,用于读取文件。通过new FileReader("C:\\Users\\linliyou\\Downloads\\csb.txt")指定要读取的文件路径,并将其传递给BufferedReader的构造函数。接下来创建了一个TreeMap对象tm,用于存储排序后的数据。
代码通过while循环读取文件中的每一行数据,将每一行根据"."进行切割,得到序号和内容两部分。使用Integer.parseInt方法将序号转换为整数,并将序号和整行内容存入TreeMap中。最后通过br.close()关闭文件读取流。
接下来创建了一个BufferedWriter对象bw,用于写入文件。通过new FileWriter("C:\\idea codes\\basic-codes\\result.txt")指定要写入的文件路径,并将其传递给BufferedWriter的构造函数。
通过Set<Map.Entry<Integer,String>> entries = tm.entrySet()获取TreeMap中的键值对集合。然后使用增强型for循环遍历集合中的每一个键值对,获取值并使用bw.write(value)写入文件。最后通过bw.close()关闭文件写入流。
这段代码的功能是读取csb.txt文件中的数据,并按照序号进行排序后写入result.txt文件。
package javalearning.chapter; import java.io.*; import java.util.*; public class AnalysisResult { public static void main(String args[]) { File fRead = new File("E:/score/score.txt"); File fWrite = new File("socreAnalysis.txt"); try{ Writer out = new FileWriter(fWrite);//以尾加方式创建指向文件fWrite的out流 BufferedWriter bufferWrite =new BufferedWriter(out);//创建指向out的bufferWrite流 Reader in = new FileReader(fRead); BufferedReader bufferRead =new BufferedReader(in);//创建指向in的bufferRead流 String str = null; while((str=bufferRead.readLine())!=null) { double totalScore=Fenxi.getTotalScore(str); str = str+"总成绩:"+totalScore; System.out.println(str); bufferWrite.write(str); bufferWrite.newLine(); } bufferRead.close(); bufferWrite.close(); } catch(IOException e) { System.out.println(e.toString()); } } }
这段代码看上去没有明显的错误。不过,如果您需要修改它以满足特定的需求,可以考虑以下几个方面:
1.文件路径:您需要根据实际情况修改文件路径,确保程序能够读取到正确的文件。
2.文件编码:如果文件编码与程序默认编码不同,您需要在创建Reader和Writer对象时指定正确的编码。
3.异常处理:您可以根据具体情况修改异常处理方式,例如记录日志、继续执行或者提示用户。
4.代码优化:您可以尝试优化代码结构、使用更好的变量名、添加注释等,以提高代码的可读性和可维护性。
如果您有具体的修改需求或者问题,请告诉我,我将尽力帮助您解决。
阅读全文
相关推荐

















