-1

やりたいこと: 私のクラスの copytest は、テキストファイルを読み取り、1 文字を編集して、この新しいファイルを新しいディレクトリに保存します。それからvoidメソッドをプログラムしたいのですが、これはまったく同じことを行い、次の方法で使用できます。

copy(String "C:\\Old.txt", String "C:\\New.txt", int 1, int 1)

これで、copy は以前のクラスの copytest とまったく同じように動作し、古いファイルを読み取り、編集して保存します。私の最初のアイデアは、最初の引数として 2 つのファイルを持つことでしたが、これは明らかに不可能です。私の新しいアイデアは、古いファイルと新しいファイルの必要なディレクトリの 2 つの文字列をメソッドに与えることです。それでもうまくいきません。私がやりたいことと、この問題を解決する方法を理解していただければ幸いです。

古いクラス コード (作品):

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

public class copytest {

    public static void main(String[] args) throws Exception {       
        readFile();
    }

    public static void readFile() throws Exception {

        // Location of file to read
        File file = new File("...old.txt");

        Scanner scanner = new Scanner(file);

        int lineNumber=1;
        int charNumber=1;
        String wantedChar="r";
        int i=0;
            while (scanner.hasNextLine()) {
                String line = scanner.nextLine();
                if (i == lineNumber+2) {
                    if (line.length() >= charNumber) {
                        line = line.substring(0,charNumber-1) + wantedChar + line.substring(charNumber);
                    }
                }
                writeFile(line);
                i++;
            }       

        scanner.close();
        System.out.println("File copied."); 
    }

    public static void writeFile(String copyText) throws Exception {

        String newLine = System.getProperty("line.separator");

        // Location of file to output
        Writer output = null;
        File file = new File("...new.txt");
        output = new BufferedWriter(new FileWriter(file, true));
        output.write(copyText);
        output.write(newLine);
        output.close();     
    }

}

新しい void コード (最初に file を引数として試してください):

public void copy(file old, file new, int x, int y) {

    public static void readFile() throws Exception {

        Scanner scanner = new Scanner(old);

        int lineNumber=y;
        int charNumber=x;
        String wantedChar="r";
        int i=0;
            while (scanner.hasNextLine()) {
                String line = scanner.nextLine();
                if (i == lineNumber+2) {
                    if (line.length() >= charNumber) {
                        line = line.substring(0,charNumber-1) + wantedChar + line.substring(charNumber);
                    }
                }
                writeFile(line);
                i++;
            }       

        scanner.close();
        System.out.println("File copied."); 
    }

    public static void writeFile(String copyText) throws Exception {

        String newLine = System.getProperty("line.separator");

        // Location of file to output
        Writer output = null;
        File file = new File(new.getPath());
        output = new BufferedWriter(new FileWriter(file, true));
        output.write(copyText);
        output.write(newLine);
        output.close();     
    }

    readFile();

}

新しい文字列を引数として試してみましたが、まだ機能しません:

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.util.Scanner;


public class copytestnew {


public void copy(String old, String newone, int x, int y) {

        // Location of file to read
        File file = new File(old);

        Scanner scanner = new Scanner(file);

        int lineNumber=y;
        int charNumber=x;
        String wantedChar="r";
        int i=0;
            while (scanner.hasNextLine()) {
                String line = scanner.nextLine();
                if (i == lineNumber+2) {
                    if (line.length() >= charNumber) {
                        line = line.substring(0,charNumber-1) + wantedChar + line.substring(charNumber);
                    }
                }
        String newLine = System.getProperty("line.separator");

        // Location of file to output
        Writer output = null;
        File file2 = new File(newone);
        output = new BufferedWriter(new FileWriter(file2, true));
        output.write(line);
        output.write(newLine);
        output.close(); 
                i++;
            }       

        scanner.close();
        System.out.println("File copied"); 
    }

}
4

2 に答える 2

0
public void copy(file old, file new, int x, int y) {

    public static void readFile() throws Exception {

メソッド内で関数を定義しています。Java のすべての関数はメソッド (静的または非静的) であるため、これは許可されていません。これを試して:

class IDontKnowHowToNameIt {


   public static void copy(file old, file new, int x, int y) {
      //...
      // call readFile from here
      // ...
   }

   private static void readFile() throws Exception {
      //...
   }
}
于 2013-07-07T13:32:22.603 に答える