我有以下代码来打开和读取文件。我无法弄清楚如何让它通过并打印文件中每个字符的总数,打印第一个和最后一个字符,并将字符打印在文件的中间。什么是最有效的方法?
这是主要课程:
import java.io.IOException;
public class fileData {
public static void main(String[ ] args) throws IOException {
String file_name = "/Users/JDB/NetBeansProjects/Program/src/1200.dna";
try {
ReadFile file = new ReadFile(file_name);
String[] arrayLines = file.OpenFile();
int i;
for (i=0; i<arrayLines.length; i++)
{
System.out.println(arrayLines[i]);
}
}
catch (IOException e) {
System.out.println(e.getMessage()) ;
}
}
}
和另一个班级:
import java.io.IOException;
import java.io.FileReader;
import java.io.BufferedReader;
public class ReadFile {
private String path;
public ReadFile (String file_path)
{
path = file_path;
}
public String[] OpenFile() throws IOException
{
FileReader fr = new FileReader(path);
BufferedReader textReader = new BufferedReader(fr);
int numberOfLines = readLines();
String[] textData = new String[numberOfLines];
int i;
for(i=0; i<numberOfLines; i++)
{
textData[i] = textReader.readLine();
}
textReader.close();
return textData;
}
int readLines() throws IOException
{
FileReader file_to_read = new FileReader(path);
BufferedReader bf = new BufferedReader(file_to_read);
String aLine;
int numberOfLines = 0;
while (( aLine = bf.readLine() ) != null)
{
numberOfLines++;
}
bf.close();
return numberOfLines;
}
答案 0 :(得分:1)
一些可能有用的提示。
Map
可用于存储有关字母表中每个字符的信息。答案 1 :(得分:1)
我能想到的最简单的理解方法是将整个文件作为String读取。然后使用String类上的方法获取第一个,最后一个和中间字符(索引为str.length()/ 2的字符)。
由于您已经在文件中一次读取一行,因此可以使用StringBuilder从这些行中构造一个字符串。使用生成的String,charAt()和substring()方法,你应该能够得到你想要的一切。
答案 2 :(得分:1)
这几行代码(使用Apache's FileUtils库):
import org.apache.commons.io.FileUtils;
public static void main(String[] args) throws IOException {
String str = FileUtils.readFileToString(new File("myfile.txt"));
System.out.println("First: " + str.charAt(0));
System.out.println("Last: " + str.charAt(str.length() - 1));
System.out.println("Middle: " + str.charAt(str.length() / 2));
}
任何说“你不能使用图书馆做作业”的人都不公平 - 在现实世界中,我们总是使用优先于reinventing the wheel的图书馆。