我有一个文本文件,内容如下:
one
two
three
four
我想通过Java文本文件中的位置访问字符串"three"。我在谷歌上找到了子字符串概念,但无法使用它。
到目前为止,我能够读取文件内容:
import java.io.*;
class FileRead
{
public static void main(String args[])
{
try{
// Open the file that is the first
// command line parameter
FileInputStream fstream = new FileInputStream("textfile.txt");
// Get the object of DataInputStream
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
//Read File Line By Line
while ((strLine = br.readLine()) != null) {
// Print the content on the console
System.out.println (strLine);
}
//Close the input stream
in.close();
}catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
}
}
我想将子字符串概念应用到文件中。它询问位置并显示字符串。
String Str = new String("Welcome to Tutorialspoint.com");
System.out.println(Str.substring(10, 15) );
如果你知道你感兴趣的文件中的字节偏移量,那么它就很简单了:
RandomAccessFile raFile = new RandomAccessFile("textfile.txt", "r");
raFile.seek(startOffset);
byte[] bytes = new byte[length];
raFile.readFully(bytes);
raFile.close();
String str = new String(bytes, "Windows-1252"); // or whatever encoding
但是要做到这一点,你必须使用字节偏移量,而不是字符偏移量-如果文件是用可变宽度编码编码,如UTF-8,那么没有办法直接寻找第n个字符,你必须从文件的顶部开始,读取并丢弃前n-1个字符。
在文本文件中查找rn
(换行符)。这样,您应该能够计算包含您的字符串的行数。
你的文件实际上是这样的
onern
tworn
threern
fourrn
你似乎在寻找这个。我在那里张贴的代码在字节级别上工作,所以它可能不适合你。另一种选择是使用BufferedReader,在循环中只读取单个字符,如下所示:
String getString(String fileName, int start, int end) throws IOException {
int len = end - start;
if (len <= 0) {
throw new IllegalArgumentException("Length of string to output is zero or negative.");
}
char[] buffer = new char[len];
BufferedReader reader = new BufferedReader(new FileReader(fileName));
for (int i = 0; i < start; i++) {
reader.read(); // Ignore the result
}
reader.read(buffer, 0, len);
return new String(buffer);
}