统计a.txt文件的字节数和字符数
import java.io.*;
public class TestIO {
public static void main(String[] args) {
try {
/**
* a.txt内容(两行)
* aab
* 我我你
*/
FileReader fr = new FileReader("f:/a.txt");
FileInputStream fis = new FileInputStream("f:/a.txt");
int zifuCount = 0; //字符数统计
int zijieCount = 0; //字节数统计
int b = 0;
while ((b = fr.read()) != -1) {
System.out.print((char) b);
System.out.print("(unicode值:"+b+")");
zifuCount++;
}
System.out.println();
System.out.println("文件有 " + zifuCount + " 个字符"); //加回车和换行8个
System.out.println();
while ((b = fis.read()) != -1) {
System.out.print((char) b);
System.out.print("(unicode值:"+b+")");
zijieCount++;
}
System.out.println();
System.out.println("文件有 " + zijieCount + " 个字节"); //加回车和换行11个,中文占两个字节
fr.close();
fis.close();
} catch (IOException e1) {
System.out.println("文件读取错误");
System.exit(-1);
}
}
}
:
输出结果:
a(unicode值:97)a(unicode值:97)b(unicode值:98)
(unicode值:13)
(unicode值:10)我(unicode值:25105)我(unicode值:25105)你(unicode值:20320)
文件有 8 个字符
a(unicode值:97)a(unicode值:97)b(unicode值:98)
(unicode值:13)
(unicode值:10)?(unicode值:206)?(unicode值:210)?(unicode值:206)?(unicode值:210)?(unicode值:196)?(unicode值:227)
文件有 11 个字节
分享到:
相关推荐
### Java.io.Reader与Java.io.InputStream的关键差异解析 在深入探讨`java.io.Reader`与`java.io.InputStream`的具体差异之前,我们首先需要理解这两者在Java I/O操作中的基础角色。`java.io.Reader`和`java.io....
`InputStream`、`OutputStream`、`Reader`和`Writer`是Java IO流的基础类,它们提供了读写文件的基本接口。本篇文章将深入讲解这些类的用法,并提供实际的代码示例,帮助初学者更好地理解和应用。 1. `InputStream`...
5. **Reader与InputStream** - Reader处理字符流,例如char和String,而InputStream处理字节流,如byte数组。 6. **hashCode的作用** - 主要用于哈希表(如HashMap)中快速查找。相等的对象必须具有相同的...
7. **Reader与InputStream的区别**: Reader处理字符流,适合读取字符数据,如文本文件;InputStream处理字节流,适用于二进制数据,如图片或音频文件。 8. **HashMap中作为key的对象要求**: 作为HashMap的key,...
12. **Reader与InputStream的区别**: - Reader处理字符流,主要用于读取Unicode字符。 - InputStream处理字节流,可用于读取ASCII字符和二进制数据。 13. **equals与==的区别**: - `==`比较基本类型值是否相等...
2. **创建Reader**:为了读取文本内容,我们需要将`InputStream`转换为`Reader`。可以使用`InputStreamReader`实现,指定适当的字符编码,如UTF-8: ```java InputStreamReader isr = new InputStreamReader(bis, ...
IO流是Java中的一种基本的数据交换方式,通过InputStream和OutputStream可以实现数据的读取和写入,而Reader和Writer可以实现字符流的读取和写入。IO流的知识点很多,需要认真学习和掌握。 InputStream的类型: * ...
InputStreamReader属于Reader类的子类,主要用于处理字符流,它充当字节流(如InputStream)与字符流之间的桥梁。在处理非ASCII编码的数据时,InputStreamReader允许指定字符编码,如果不指定,它会使用操作系统的...
这两个类也可以设计成具有通用性,可以接受不同的文件路径,或者直接操作`InputStream`和`OutputStream`,以适应各种场景。 总的来说,理解和使用`CsvReader.java`和`CsvWriter.java`需要掌握Java的文件I/O操作、...
Reader 和 InputStream 都是 JAVA 中的输入流,但它们有着不同的特点。Reader 用于读入 16 位字符,也就是 Unicode 编码的字符,而 InputStream 用于读入 ASCII 字符和二进制数据。Reader 是字符流,而 InputStream ...
Mybatis配置文件解析,SqlSessionFactoryBuilder的build方法接受Reader/InputStream/Configuration作为配置源,创建SqlSessionFactory实例。在接受Reader/InputStream作为配置源时,创建了XMLConfigBuilder实例来...
Mybatis配置文件解析组件,SqlSessionFactoryBuilder的build方法接受Reader/InputStream/Configuration作为配置源,创建SqlSessionFactory实例。在接受Reader/InputStream作为配置源时,创建了XMLConfigBuilder实例...
- `InputStreamReader`: 这个类将字节流(`InputStream`)转换为字符流,支持多种字符编码,如ASCII、UTF-8等。 - `CharArrayReader`: 它允许直接使用一个字符数组作为数据源进行读取,常用于内存中的数据处理。 `...
首先,IO流的对称性质体现在InputStream与OutputStream以及Reader与Writer这两对概念上。InputStream和OutputStream构成了字节输入-输出的系统,它们是所有字节流的基类,提供了一般性的输入输出操作。Reader和...
1. **InputStream与OutputStream**: - **InputStream**:这是所有字节输入流的基类,提供了一套基本的方法来读取字节数据。例如,`FileInputStream`用于从文件中读取数据,而`ByteArrayInputStream`则允许从内存中...
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; while ((line = reader.readLine()) != null) { Log.d("TAG", line); } } catch (IOException e) { e....
Android的`java.net.URL`类可以用于打开连接,`java.io.InputStream`用于读取响应数据。 - `HttpURLConnection`是另一种常用的网络请求方式,它提供了更多的控制和优化选项。然而,对于更复杂的HTTP操作,开发者...
Reader类有与InputStream相似的read方法,而Writer类也有与OutputStream对应的write方法。这些方法用于读取或写入单个字符或字符数组。 Java的流系统设计得非常灵活,允许不同类型的流进行组合和链接,以满足复杂的...
* io流 运用 * 注意:只要子类 包含以下类名字的,就是该... * InputStream----- 输入字节流 * Reader-------- 输入字符流 * OutputStream-----输出字节流 * Writer --------输出字符流
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); StringBuilder content = new StringBuilder(); String line; while ((line = reader.readLine()) != ...