次の機能を考慮
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
(生のバイトではなく)テキストをファイルに書き込むには、 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
行を変更する
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();
}
Files.write(Paths.get(filepath),texttobewrittentofile,StandardOpenOption.APPEND ,StandardOpenOption.CREATE);
これは、ファイルが存在しない場合、ファイルを作成します。ファイルが存在する場合、既存のファイルを使用し、テキストが追加されます。すべての行を次の行に書き込む場合.
String texttobewrittentofile = text + System.lineSeparator();
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"
新しい行。
他の答えはうまくいくはずです。しかし、私は言及したい
from Java doc:
FileWriterは、文字のストリームを書き込むためのものです。生バイトのストリームを書き込むには、FileOutputStreamの使用を検討してください。
メソッドコードを読んで、文字列をファイルに書き込もうとしていて、文字列を生バイトに変換してから書き込むので、FileWriterの使用は悪い考えではないと思います。
改行の問題のために、Writerにはメソッド.write(String)があり、これは使いやすいです。
windowsオペレーティングシステムを使用している場合は、エンドラインに\ r\nを使用します。
または、次のようなものを使用できます。 「\ 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();
}
}
PrintStream で印刷できます。
PrintStream ps = new PrintStream(fop);
ps.println(nodeValue);
ps.close();