0

Java クラス tard の紹介はこちら。ファイルからデータを読み取ってから、別のファイルに操作して保存しようとしています。私は近いと思いますが、スキャナーと.IOを一緒に使用すると問題が発生します。どんな助けでも素晴らしいでしょう。

import java.util.Scanner;
import java.io.*;

public class fileswitch
{

    public static void main(String[] Args) throws IOException
    {
        String filename;
        String filename2;
        String text;

        Scanner keyboard = new Scanner(System.in);

        System.out.print("Enter the name of a file: ");
        filename = keyboard.nextLine();

        PrintWriter outputFile = new PrintWriter(filename);

        System.out.print("Enter the name of a second file: ");
        filename2 = keyboard.nextLine();

        PrintWriter outputFile2 = new PrintWriter(filename2);

        while (filename.hasNextLine())
        {
            text = filename.readAllLines();
            text = text.toUpperCase();
            outputFile2.print(text);
            outputFile2.close();
        }       

    }
}
4

3 に答える 3

3

新しいファイルの作成にも使用できます

package test;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;

public class WriteStringToFile {

    public static void main(String[] args) throws IOException {
        String string = "This is\na test";
        File file = new File("test.txt");
        FileUtils.writeStringToFile(file, string);
    }
}

ストリームを閉じる必要がないため、これは良い方法です。

これにより、予想される出力を含む test.txt ファイルが生成されます

于 2013-07-15T20:20:14.687 に答える
0

使ってみてBufferedReader

BufferedReader pw = new BufferedReader(new FileReader(fileName)); 
String s = null;
s = pw.readLine();

実施例

public static void main(String[] args) throws IOException {
        Scanner keyboard = new Scanner(System.in);
        String filePath = keyboard.next();

        BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath));

        String line = bufferedReader.readLine();
        System.out.println(line);
    }

コンソールのパスを次のように入力します

C:\Users\path\Desktop\1.txt

あなたはPrintWriter書くために使うことができます

PrintWriter out   = new PrintWriter(new BufferedWriter(new FileWriter(fileName2)));
于 2013-07-15T20:12:26.803 に答える
0

あなたのコードはコンパイルされません。

while (filename.hasNextLine()) // String#hasNextLine() does not exist

hasNextLine()ファイルの読み取りにはScanner使用されていませんが、キーボードからのコンソールのキーストロークのみに使用されています。

そこで使うつもりならoutputFile; PrintWriterをファイルリーダーとして使用できないため、これも機能しません。まあ、その名前はそれを明白にします。そうじゃない?

ただし、PrintWriter出力をフォーマットする場合を除き、書き込みにも使用しないでください。プレーンな文字出力の場合は、FileWriter(パフォーマンスのために a で囲まれたBufferedWriter) を優先します。同様に、ファイルを読み取る場合は、FileReader(再度 a で囲まれたBufferedReader) を優先します。

コードは次のようになります。

public static void main(String[] Args) throws IOException
{
    // create the scanner for console 
    Scanner keyboard = new Scanner(System.in);

    // read the input/output file names
    System.out.print("Enter the name of a file: ");
    String inFile = keyboard.nextLine();

    System.out.print("Enter the name of a second file: ");
    String outFile = keyboard.nextLine();

    // close the scanner
    keyboard.close();

    // open file streams
    BufferedReader reader = new BufferedReader(new FileReader(inFile));
    BufferedWriter writer = new BufferedWriter(new FileWriter(outFile));

    // copy the data (line by line)
    String text = null;
    while ((text = reader.readLine()) != null)
    {
        writer.write(text);
        writer.newLine();
    }

    // close the file streams
    reader.close();
    writer.close();
}
于 2013-07-15T20:19:53.573 に答える