下記のように、フォルダからテキストファイル抽出し、抽出したファイルの内容を1つのテキストファイルに読み書きしようとしたのですが、上手くいきません。
テキストファイルの抽出は、コンソール上に記すことができました。
しかし、抽出したファイルの読み書きにおいて、別のメソッド(readFileメソッド)で処理しようとしましたが、
読み込みさえも行われないという状況です。オブジェクトの生成で、java.io.FileNotFoundException: C:\Users\nakamura\Documents\テキスト (アクセスが拒否されました。)が出て、はじかれてしまいました。
また、引数に関して、fromPathの引数をC:\Users\nakamura\Documents\テキストというフォルダ名とし、 toPathの引数をC:\Users\nakamura\Documents\テキスト\sample.txtとあらかじめ設定しました。
プログラムの内容を詳しく説明いたしますと、C:\Users\nakamura\Documents\テキストにあるテキストファイルをリストアップし、リストアップしたファイルの内容をC:\Users\nakamura\Documents\テキスト\sample.txtにコピーさせるというプログラムを作ろうとしています。
やり方として、恐らく読み込み元の引数をフォルダ名にしているため、上手くいかないのだろうと考えます。
しかし、どう改善すれば出力されるのか分からないので、教えていただけると幸いです。
よろしくお願い致します。
package
1 2import java.io.BufferedReader; 3import java.io.File; 4import java.io.FileInputStream; 5import java.io.FileOutputStream; 6import java.io.FileReader; 7import java.io.FileWriter; 8import java.io.IOException; 9import java.io.InputStreamReader; 10import java.io.OutputStreamWriter; 11import java.io.PrintWriter; 12public class FileSearch2 { 13 14 public static void main(String[] args) { 15 // TODO 自動生成されたメソッド・スタブ 16 17 //変数の初期化 18 String fromPath = ""; 19 String toPath = ""; 20 21 //コマンドライン引数 22 fromPath = args[0]; 23 toPath = args[1]; 24 25 File dir = new File(fromPath); 26 File[] files = dir.listFiles(); 27 28 29 for (int i = 0; i < files.length; i++) { 30 if(files[i].isFile() && files[i].getName().endsWith(".txt")) { 31 System.out.println(files[i]); 32 33 } 34 } 35 36 readFile(fromPath, toPath); 37 38 } 39 40 private static void readFile(String fromPath, String toPath) { 41 // TODO 自動生成されたメソッド・スタブ 42 try { 43 44 File file = new File(toPath); 45 46 //ファイルの存在確認 47 if(!file.exists()) { 48 System.out.println("ファイルを作成します。"); 49 return; 50 } else { 51 System.out.println("ファイルを上書きします。"); 52 } 53 54 55 //配列の定義 56 int a = 0; 57 String[] text = new String[a]; 58 int h =0; 59 String line; 60 61 //読み込みオブジェクトの生成する 62 FileReader fr = new FileReader(fromPath); 63 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(fromPath), "Shift-JIS")); 64 65 //ファイルの読み込み 66 while ((line = br.readLine()) != null) { 67 text[h] = line; 68 h++; 69 } 70 71 //書き込みオブジェクトの生成 72 FileWriter fw = new FileWriter(toPath); 73 PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(toPath), "Shift-JIS")); 74 75 //ファイルの書き込み 76 for (int k = 0; k < text.length; k++) { 77 pw.write(text[k]); 78 pw.write("\r\n"); 79 } 80 81 //ストリームをフラッシュ 82 pw.flush(); 83 84 //ファイルクローズ 85 pw.close(); 86 fw.close(); 87 br.close(); 88 fr.close(); 89 90 System.out.println("コピーが完了しました。"); 91 92 } catch (IOException e) { 93 System.out.println("読み込みに失敗しました。"); 94 } 95 96 } 97}
回答2件
あなたの回答
tips
プレビュー