Java FileReader与FileInputReader。分裂与模式

Java FileReader与FileInputReader。分裂与模式,java,split,filereader,fileinputstream,Java,Split,Filereader,Fileinputstream,我正在处理一个2G左右的文件。我想逐行阅读文件,找出一些具体的术语。 我可以更好地使用哪个类:FileReader还是FileInputStream? 我怎样才能有效地找到特定的单词。我只是在使用split()方法,但是我可以将java.util.regex.Pattern类与java.util.regex.Matcher类结合使用 因此,问题是: 我可以使用哪个类:FileReader还是FileInputStream? 我可以使用split方法还是regex类 有人能回答这个问题吗?Than

我正在处理一个2G左右的文件。我想逐行阅读文件,找出一些具体的术语。 我可以更好地使用哪个类:FileReader还是FileInputStream? 我怎样才能有效地找到特定的单词。我只是在使用split()方法,但是我可以将java.util.regex.Pattern类与java.util.regex.Matcher类结合使用

因此,问题是: 我可以使用哪个类:FileReader还是FileInputStream? 我可以使用split方法还是regex类


有人能回答这个问题吗?Thans.

您可能需要使用一个读卡器(可能用a包装),因为您使用的是字符串数据,而不是二进制数据。您应该预编译您的模式()。除此之外,从您的描述中还不清楚您是否应该使用,或者使用匹配器是否更合适


请注意,这相当于
Pattern.compile(regex).split(str,limit)

,因为您使用的是字符串数据,而不是二进制数据。您应该预编译您的模式()。除此之外,从您的描述中还不清楚您是否应该使用,或者使用匹配器是否更合适


请注意,这相当于
Pattern.compile(regex).split(str,limit)
最好的选择是使用
BufferedReader
(对于其
readLine()
方法)包装
InputStreamReader
(对于其指定编码的能力)包装
FileInputStream
(对于实际读取文件):

FileReader
使用平台默认编码,这通常是一个坏主意,使得该类主要成为不知道潜在问题的开发人员的陷阱


如果您只想在行中查找子字符串,
String.indexOf()
是最有效的方法;如果您确实在寻找特定的模式,那么使用正则表达式会更好。

最好的选择是使用
BufferedReader
(用于其
readLine()
方法)包装
InputStreamReader
(用于其指定编码的能力)包装
FileInputStream
(用于实际读取文件):

FileReader
使用平台默认编码,这通常是一个坏主意,使得该类主要成为不知道潜在问题的开发人员的陷阱

如果您只想在行中查找子字符串,
String.indexOf()
是最有效的方法;如果您确实在寻找特定的模式,那么使用正则表达式会更好。

有一个
readLine()
方法,可以用于逐行读取。
读卡器
(和
写卡器
)类可用于字符串数据,其中
输入流
(和
输出流
)应用于二进制数据(字节数组)

具有可用于逐行读取的
readLine()
方法。
读卡器
(和
写卡器
)类可用于字符串数据,其中
输入流
(和
输出流
)应用于二进制数据(字节数组)


什么是FileInputReader?你在哪里找到的什么是FileInputReader?你在哪里找到的
BufferedReader br = new BufferedReader(new InputStreamReader(
    new FileInputStream(name), encoding));
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;
while((line = reader.readLine()) != null) {
    // Do something with the line
}