字符缓冲流读取文件输出全是数字
时间: 2023-07-18 13:17:37 浏览: 60
如果字符缓冲流读取文件输出全是数字,可能是因为文件中的内容都是数字而没有包含其他字符,或者读取文件时没有正确的进行字符编码转换。您可以尝试更改字符编码方式,或者在读取文件时使用其他的读取方式,例如字节流读取。同时,您也可以检查一下文件的内容,确保文件中包含了您需要的字符。如果问题仍然存在,可以提供更多的代码和具体情况,以便更好地解决问题。
相关问题
利用缓冲字符流与字符流缓冲区读取文件
在Java中,我们可以使用缓冲字符流和字符流缓冲区来读取文件。这两种方法都比直接使用字符流要高效得多。
使用缓冲字符流读取文件的步骤如下:
1. 创建FileReader对象,用于读取文件。
2. 创建BufferedReader对象,将FileReader对象作为参数传递给它。
3. 调用BufferedReader对象的readLine()方法读取文件内容。
4. 循环调用readLine()方法,直到返回null,表示文件已读取完毕。
5. 关闭BufferedReader对象和FileReader对象。
示例代码如下:
```
FileReader fr = new FileReader("file.txt");
BufferedReader br = new BufferedReader(fr);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
fr.close();
```
使用字符流缓冲区读取文件的步骤如下:
1. 创建FileReader对象,用于读取文件。
2. 创建char数组,作为字符流缓冲区。
3. 创建int变量,用于记录从文件中读取的字符数。
4. 循环读取文件内容,每次读取一定数量的字符到缓冲区中。
5. 关闭FileReader对象。
示例代码如下:
```
FileReader fr = new FileReader("file.txt");
char[] buffer = new char[1024];
int len;
while ((len = fr.read(buffer)) != -1) {
System.out.println(new String(buffer, 0, len));
}
fr.close();
```
注意,在使用字符流缓冲区读取文件时,我们需要使用String类的构造方法将char数组转换成字符串。同时,需要注意读取到的字符数len可能小于缓冲区的大小,因此在构造字符串时需要指定有效字符的长度。
使用字符流和字符缓冲流实现文件的拷贝。
好的,这是一个简单的文件拷贝程序的示例代码,使用字符流和字符缓冲流实现:
```java
import java.io.*;
public class FileCopy {
public static void main(String[] args) {
String sourceFile = "source.txt";
String targetFile = "target.txt";
try (FileReader reader = new FileReader(sourceFile);
BufferedReader br = new BufferedReader(reader);
FileWriter writer = new FileWriter(targetFile);
BufferedWriter bw = new BufferedWriter(writer)) {
String line;
while ((line = br.readLine()) != null) {
bw.write(line);
bw.newLine();
}
System.out.println("File copy succeeded!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
其中,`FileReader` 和 `FileWriter` 是字符流,`BufferedReader` 和 `BufferedWriter` 是字符缓冲流。使用字符缓冲流可以提高文件的读写效率。在 `try` 块的括号中创建流对象,在 `try` 块结束时自动关闭流对象,无需手动关闭。在 `BufferedWriter` 中使用 `newLine()` 方法换行。