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那里使用;这也行不通,因为您不能将 aPrintWriter用作文件阅读器。嗯,这个名字很明显。不是吗?

PrintWriter但是,除非您正在格式化输出,否则您也应该避免使用for writing。对于纯字符输出,首选 a FileWriter(包含在 aBufferedWriter中以提高性能)。同样,对于读取文件,更喜欢 a 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 回答