web-dev-qa-db-ja.com

ファイルに改行を書き込む

次の機能を考慮

private static void GetText(String nodeValue) throws IOException {

   if(!file3.exists()) {
       file3.createNewFile();
   }

   FileOutputStream fop=new FileOutputStream(file3,true);
   if(nodeValue!=null)
       fop.write(nodeValue.getBytes());

   fop.flush();
   fop.close();

}

次の行に毎回書き込むために何を追加しますか?

たとえば、特定の文字列の各単語を別々のllineに入れたい場合は、たとえば:

i am mostafa

として書き込みます:

 i
 am
 mostafa
14
lonesome

(生のバイトではなく)テキストをファイルに書き込むには、 FileWriter の使用を検討する必要があります。また、 BufferedWriter でラップする必要があります。これにより newLine メソッドが提供されます。

各行を新しい行に書き込むには、 String.split を使用してテキストを単語の配列に分割します。

そこで、要件の簡単なテストを示します。

public static void main(String[] args) throws Exception {
    String nodeValue = "i am mostafa";

    // you want to output to file
    // BufferedWriter writer = new BufferedWriter(new FileWriter(file3, true));
    // but let's print to console while debugging
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));

    String[] words = nodeValue.split(" ");
    for (String Word: words) {
        writer.write(Word);
        writer.newLine();
    }
    writer.close();
}

出力は次のとおりです。

i
am
mostafa
37
sudocode

行を変更する

if(nodeValue!=null)
    fop.write(nodeValue.getBytes());

fop.flush();

if(nodeValue!=null) {
    fop.write(nodeValue.getBytes());
    fop.write(System.getProperty("line.separator").getBytes());
}

fop.flush();

編集に対処するための更新

各Wordを別の行に書き込むには、入力文字列を分割してから、各Wordを個別に書き込む必要があります。

private static void GetText(String nodeValue) throws IOException {

    if(!file3.exists()) {
        file3.createNewFile();
    }

    FileOutputStream fop=new FileOutputStream(file3,true);
    if(nodeValue!=null)
        for(final String s : nodeValue.split(" ")){
            fop.write(s.getBytes());
            fop.write(System.getProperty("line.separator").getBytes());
        }
    }

    fop.flush();
    fop.close();

}
11
Jack Edmonds
Files.write(Paths.get(filepath),texttobewrittentofile,StandardOpenOption.APPEND ,StandardOpenOption.CREATE);    

これは、ファイルが存在しない場合、ファイルを作成します。ファイルが存在する場合、既存のファイルを使用し、テキストが追加されます。すべての行を次の行に書き込む場合.

String texttobewrittentofile = text + System.lineSeparator();
5
Biku
if(!file3.exists()){
    file3.createNewFile();
}
FileOutputStream fop=new FileOutputStream(file3,true);
if(nodeValue!=null) fop.write(nodeValue.getBytes());

fop.write("\n".getBytes());

fop.flush();
fop.close();

各書き込みの最後に改行を追加する必要があります。

解決策:

wINDOWSでは、"\r\n"新しい行。

1

他の答えはうまくいくはずです。しかし、私は言及したい

from Java doc:

FileWriterは、文字のストリームを書き込むためのものです。生バイトのストリームを書き込むには、FileOutputStreamの使用を検討してください。

メソッドコードを読んで、文字列をファイルに書き込もうとしていて、文字列を生バイトに変換してから書き込むので、FileWriterの使用は悪い考えではないと思います。

改行の問題のために、Writerにはメソッド.write(String)があり、これは使いやすいです。

0
Kent

windowsオペレーティングシステムを使用している場合は、エンドラインに\ r\nを使用します。

0
Hafiz Hamza

または、次のようなものを使用できます。 「\ n」に注意してください。

/**
 * Created by mona on 3/26/16.
 */
import Java.io.File;
import Java.io.FileNotFoundException;
import Java.io.FileReader;
import Java.io.FileWriter;
import Java.io.BufferedReader;
public class FileExample {


    public static void main (String[] args) throws Java.io.IOException {

        File newFile = new File("Tweet.txt");
        FileWriter fileWriter = new FileWriter(newFile);
        fileWriter.write("Mona Jalal");
        fileWriter.append("\nMona Mona");
        fileWriter.close();
        FileReader fileReader = new FileReader(newFile);
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        String line;
        while ((line = bufferedReader.readLine()) != null) {
            System.out.println(line);
        }
        fileReader.close();
        bufferedReader.close();



    }
}
0
Mona Jalal

PrintStream で印刷できます。

PrintStream ps = new PrintStream(fop);
ps.println(nodeValue);
ps.close();
0
Vlad