私はJavaが初めてで、テキストファイルのパスという1つの引数を持つプログラムを作成しようとしています。プログラムはテキスト ファイルを検索し、画面に出力します。最終的には、これをビルドして、指定されたテキスト ファイルをフォーマットし、それを出力ファイルに出力しますが、それについては後で説明します。
とにかく、私のプログラムは常に IOException をスローしていますが、その理由はわかりません。引数 C:\JavaUtility\input.txt を指定すると、実行時に「エラー、ファイルを読み取れませんでした」というメッセージが表示されます。私のコードは以下にあります。
import java.io.*;
public class utility {
public static void main(String[] path){
try{
FileReader fr = new FileReader(path[0]);
BufferedReader textReader = new BufferedReader(fr);
String aLine;
int numberOfLines = 0;
while ((aLine = textReader.readLine()) != null) {
numberOfLines++;
}
String[] textData = new String[numberOfLines];
for (int i=0;i < numberOfLines; i++){
textData[i] = textReader.readLine();
}
System.out.println(textData);
return;
}
catch(IOException e){
System.out.println("Error, could not read file");
}
}
}
[編集] 皆様、ご協力ありがとうございました! したがって、私の最終目標を考えると、行数を見つけて有限配列に格納することは依然として有用であると考えました。それで、私は2つのクラスを書くことになりました。1つ目はReadFile.java
、必要なデータを見つけて、ほとんどの読み取りを処理します。2 つ目FileData.java
は、ReadFile のメソッドを呼び出して出力します。後で誰かが役に立つと思った場合に備えて、以下に投稿しました。
package textfiles;
import java.io.*;
public class ReadFile {
private String path;
public ReadFile(String file_path){
path = file_path;
}
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;
}
public String[] OpenFile() throws IOException{
FileReader fr = new FileReader(path);
BufferedReader textReader = new BufferedReader(fr);
int numberOfLines = readLines();
String[] textData = new String[numberOfLines];
for(int i=0; i < numberOfLines; i++){
textData[i] = textReader.readLine();
}
textReader.close();
return textData;
}
}
package textfiles;
import java.io.IOException;
public class FileData {
public static void main(String[] args)throws IOException{
String file_name = args[0];
try{
ReadFile file = new ReadFile(file_name);
String[] aryLines = file.OpenFile();
for(int i=0; i < aryLines.length; i++){
System.out.println(aryLines[i]);
}
}
catch (IOException e){
System.out.println(e.getMessage());
}
}
}