0

プログラミングを始めたばかりですが、Java で基本的なファイル I/O プログラムを作成しているときに行き詰まりました。

ユースケース: ファイル内の文字列をチェックし、同じ行に文字列を追加したい。EG ファイルの内容は次のとおりです。

hostname=localhost
port=192

したがって、プログラムで上記のファイル内の文字列を検索し、渡した値にhostname置き換える必要があります。localhost

ファイルを取得して内容を一時ファイルに渡すことはできますが、ファイル内の文字列を操作する方法がわかりません。どんな助けでも大歓迎です。

4

3 に答える 3

1

あなたが試すことができますString.replace()

String replacement = "you-other-host";

// Read your file line by line...
line = line.replace("localhost", replacement);
// and write the modified line to your temporary file
于 2013-01-22T10:53:58.993 に答える
0

これを行う方法は2つあります(エラー/例外処理を行わず、ターゲットと置換を引数として渡す基本的な方法です)。

ファイルにキーと値のペアが保存されている場合、最良の方法はユーザーjava.util.Properties

public class ReplaceInFile {

    private final static String src = "test.txt";
    private final static String dst_str = "test_new_str.txt";
    private final static String dst_prop = "test_new_prop.txt";

    public static void main(String[] args) throws IOException {
        usingStringOperations();
        usingProperties();
    }

    private static void usingProperties() throws IOException {
        File srcFile = new File(src);
        FileInputStream fis = new FileInputStream(srcFile);
        Properties properties = new Properties();
        properties.load(fis);
        fis.close();
        if(properties.getProperty("hostname") != null) {
            properties.setProperty("hostname", "127.0.0.1");
            FileOutputStream fos = new FileOutputStream(dst_prop);
            properties.store(fos, "Using java.util.Properties");
            fos.close();
        }
    }

    private static void usingStringOperations() throws IOException {
        File srcFile = new File(src);
        FileInputStream fis = new FileInputStream(srcFile);
        int len = fis.available();
        if(len > 0) {
            byte[] fileBytes = new byte[len];
            fis.read(fileBytes, 0, len);
            fis.close();
            String strContent = new String(fileBytes);
            int i = strContent.indexOf("localhost");
            if(i != -1) {
                String newStrContent = strContent.substring(0, i) + 
                        "127.0.0.1" +
                        strContent.substring(i + "localhost".length(), strContent.length());
                FileOutputStream fos = new FileOutputStream(dst_str);
                fos.write(newStrContent.getBytes());
                fos.close();    
            }
        }
    }
}
于 2013-01-22T11:28:10.257 に答える
0

replace、concat などのメソッドを使用する必要があります。行き詰まったら、コードを試して投稿してください。

http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html

于 2013-01-22T10:54:12.847 に答える