मुझे जावा में मौजूदा फ़ाइल पर बार-बार पाठ को जोड़ने की आवश्यकता है। मैं उसको कैसे करू?
मुझे जावा में मौजूदा फ़ाइल पर बार-बार पाठ को जोड़ने की आवश्यकता है। मैं उसको कैसे करू?
जवाबों:
क्या आप लॉगिंग उद्देश्यों के लिए ऐसा कर रहे हैं? यदि हां, तो इसके लिए कई पुस्तकालय हैं । सबसे लोकप्रिय में से दो Log4j और Logback हैं ।
यदि आपको केवल एक बार ऐसा करने की आवश्यकता है, तो फ़ाइल वर्ग यह आसान बनाता है:
try {
Files.write(Paths.get("myfile.txt"), "the text".getBytes(), StandardOpenOption.APPEND);
}catch (IOException e) {
//exception handling left as an exercise for the reader
}
सावधान : NoSuchFileException
यदि फ़ाइल पहले से मौजूद नहीं है, तो उपरोक्त दृष्टिकोण फेंक देगा । यह स्वचालित रूप से एक नई पंक्ति को संलग्न नहीं करता है (जो आप अक्सर पाठ फ़ाइल में संलग्न करते समय चाहते हैं)। स्टीव चेम्बर्स का जवाब शामिल है कि आप Files
कक्षा के साथ ऐसा कैसे कर सकते हैं ।
हालाँकि, यदि आप कई बार एक ही फाइल पर लिख रहे हैं, तो ऊपर वाले को डिस्क पर कई बार फाइल को खोलना और बंद करना पड़ता है, जो एक धीमा ऑपरेशन है। इस मामले में, एक बफर लेखक बेहतर है:
try(FileWriter fw = new FileWriter("myfile.txt", true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter out = new PrintWriter(bw))
{
out.println("the text");
//more code
out.println("more text");
//more code
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
टिप्पणियाँ:
FileWriter
कंस्ट्रक्टर का दूसरा पैरामीटर इसे नई फ़ाइल लिखने के बजाय फ़ाइल में जोड़ने के लिए कहेगा। (यदि फ़ाइल मौजूद नहीं है, तो इसे बनाया जाएगा।)BufferedWriter
महंगे लेखक (जैसे FileWriter
) के लिए a का उपयोग करने की सिफारिश की जाती है ।PrintWriter
आपको एक println
सिंटैक्स तक पहुँच प्रदान करता है जिसका उपयोग आप संभवतः से करते हैं System.out
।BufferedWriter
और PrintWriter
आवरण सख्ती से आवश्यक नहीं हैं।try {
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("myfile.txt", true)));
out.println("the text");
out.close();
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
यदि आपको पुराने Java के लिए मजबूत अपवाद हैंडलिंग की आवश्यकता है, तो यह बहुत ही महत्वपूर्ण है:
FileWriter fw = null;
BufferedWriter bw = null;
PrintWriter out = null;
try {
fw = new FileWriter("myfile.txt", true);
bw = new BufferedWriter(fw);
out = new PrintWriter(bw);
out.println("the text");
out.close();
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
finally {
try {
if(out != null)
out.close();
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
try {
if(bw != null)
bw.close();
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
try {
if(fw != null)
fw.close();
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
}
new BufferedWriter(...)
एक अपवाद फेंकता है; विल FileWriter
बंद कर दिया? मुझे लगता है कि इसे बंद नहीं किया जाएगा, क्योंकि close()
विधि (सामान्य परिस्थितियों में) को out
ऑब्जेक्ट पर लागू किया जाएगा , जो इस मामले को प्रारंभिक नहीं किया जाएगा - इसलिए वास्तव में close()
विधि को लागू नहीं किया जाएगा -> फ़ाइल को खोला जाएगा, लेकिन बंद नहीं होगा। तो IMHO के try
बयान को इस तरह देखना चाहिए try(FileWriter fw = new FileWriter("myFile.txt")){ Print writer = new ....//code goes here }
और ब्लॉक flush()
से बाहर निकलने से पहले उसे लेखक को बताना चाहिए try
!!!
StandardOpenOption.APPEND
इसे नहीं बनाएगा - एक मौन विफलता की तरह - जैसे कि यह अपवाद भी नहीं फेंकेगा। (2) उपयोग करने .getBytes()
का मतलब होगा कि पहले या पाठ के बाद कोई वापसी चरित्र नहीं है। इन्हें संबोधित करने के लिए एक वैकल्पिक उत्तर जोड़ा है ।
आप fileWriter
एक ध्वज सेट के साथ उपयोग कर सकते हैं true
, संलग्न करने के लिए।
try
{
String filename= "MyFile.txt";
FileWriter fw = new FileWriter(filename,true); //the true will append the new data
fw.write("add a line\n");//appends the string to the file
fw.close();
}
catch(IOException ioe)
{
System.err.println("IOException: " + ioe.getMessage());
}
close
finally
ब्लॉक में रखा जाना चाहिए , जैसा कि मामले में अपवाद में @ etech के जवाब में दिखाया गया है , FileWriter के निर्माण और बंद करने के बीच फेंक दिया जाएगा।
try(FileWriter fw = new FileWriter(filename,true)){ // Whatever }catch(IOException ex){ ex.printStackTrace(); }
कोशिश / कैच ब्लॉक के साथ यहां सभी जवाब नहीं होने चाहिए। अंत में ब्लॉक में निहित .close () टुकड़े?
चिह्नित उत्तर के लिए उदाहरण:
PrintWriter out = null;
try {
out = new PrintWriter(new BufferedWriter(new FileWriter("writePath", true)));
out.println("the text");
} catch (IOException e) {
System.err.println(e);
} finally {
if (out != null) {
out.close();
}
}
इसके अलावा, जावा 7 के रूप में, आप एक कोशिश के साथ-साथ संसाधनों का उपयोग कर सकते हैं । घोषित संसाधन को बंद करने के लिए अंत में ब्लॉक की आवश्यकता नहीं है क्योंकि यह स्वचालित रूप से नियंत्रित किया जाता है, और यह भी कम क्रिया है:
try(PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("writePath", true)))) {
out.println("the text");
} catch (IOException e) {
System.err.println(e);
}
out
यह दायरे से बाहर हो जाता है, तो कचरा इकट्ठा होने पर यह अपने आप बंद हो जाता है, है ना? finally
ब्लॉक के साथ आपके उदाहरण में , मुझे लगता है कि out.close()
अगर आपको सही याद है तो आपको वास्तव में एक और नेस्टेड कोशिश / पकड़ की आवश्यकता है। जावा 7 समाधान बहुत चालाक है! (मैं जावा 6 के बाद से कोई जावा देवता नहीं कर रहा हूं, इसलिए मैं उस बदलाव से अपरिचित था।)
flush
विधि की आवश्यकता होगी ?
संपादित करें - अपाचे कॉमन्स 2.1 के रूप में, इसे करने का सही तरीका है:
FileUtils.writeStringToFile(file, "String to append", true);
मैंने फ़ाइल को अंत में ठीक से बंद करने के लिए @ किप के समाधान को अनुकूलित किया:
public static void appendToFile(String targetFile, String s) throws IOException {
appendToFile(new File(targetFile), s);
}
public static void appendToFile(File targetFile, String s) throws IOException {
PrintWriter out = null;
try {
out = new PrintWriter(new BufferedWriter(new FileWriter(targetFile, true)));
out.println(s);
} finally {
if (out != null) {
out.close();
}
}
}
किप के उत्तर पर थोड़ा विस्तार करने के लिए , यहां एक सरल जावा 7+ तरीका है , जो किसी फ़ाइल में एक नई लाइन को जोड़ने के लिए है, अगर यह पहले से मौजूद नहीं है , तो यह बनाएं :
try {
final Path path = Paths.get("path/to/filename.txt");
Files.write(path, Arrays.asList("New line to append"), StandardCharsets.UTF_8,
Files.exists(path) ? StandardOpenOption.APPEND : StandardOpenOption.CREATE);
} catch (final IOException ioe) {
// Add your own exception handling...
}
नोट: ऊपर एक फ़ाइल के लिए पाठ की पंक्तियों को लिखने वाले Files.write
अधिभार का उपयोग करता है (यानी एक कमांड के समान )। केवल अंत तक पाठ लिखने के लिए (यानी एक कमांड के समान ), एक वैकल्पिक अधिभार का उपयोग किया जा सकता है, एक बाइट सरणी (जैसे ) में गुजर रहा है ।println
print
Files.write
"mytext".getBytes(StandardCharsets.UTF_8)
.CREATE
आपके लिए काम करता है।
यह थोड़ा चिंताजनक है कि इनमें से कितने उत्तर त्रुटि के मामले में फ़ाइल हैंडल को खुला छोड़ देते हैं। जवाब https://stackoverflow.com/a/15053443/2498188 पैसे पर है, लेकिन केवल इसलिए BufferedWriter()
नहीं फेंक सकते। अगर ऐसा होता तो एक अपवाद छोड़ देताFileWriter
वस्तु को खुला ।
ऐसा करने का एक और सामान्य तरीका जो परवाह नहीं करता है अगर BufferedWriter()
फेंक सकता है:
PrintWriter out = null;
BufferedWriter bw = null;
FileWriter fw = null;
try{
fw = new FileWriter("outfilename", true);
bw = new BufferedWriter(fw);
out = new PrintWriter(bw);
out.println("the text");
}
catch( IOException e ){
// File writing/opening failed at some stage.
}
finally{
try{
if( out != null ){
out.close(); // Will close bw and fw too
}
else if( bw != null ){
bw.close(); // Will close fw too
}
else if( fw != null ){
fw.close();
}
else{
// Oh boy did it fail hard! :3
}
}
catch( IOException e ){
// Closing the file writers failed for some obscure reason
}
}
जावा 7 के अनुसार, अनुशंसित तरीका "संसाधनों के साथ प्रयास करें" का उपयोग करना है और इसके साथ जेवीएम से निपटने दें:
try( FileWriter fw = new FileWriter("outfilename", true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter out = new PrintWriter(bw)){
out.println("the text");
}
catch( IOException e ){
// File writing/opening failed at some stage.
}
PrintWriter.close()
से डॉक्स के रूप throws IOException
में घोषित नहीं किया गया है । इसके स्रोत को देखते हुए , विधि, वास्तव में, फेंक नहीं सकती , क्योंकि यह इसे अंतर्निहित धारा से पकड़ता है, और एक ध्वज सेट करता है। इसलिए यदि आप अगले स्पेस शटल या एक एक्स-रे खुराक पैमाइश प्रणाली के लिए कोड पर काम कर रहे हैं, तो आपको प्रयास करने के बाद उपयोग करना चाहिए । यह वास्तव में प्रलेखित किया जाना चाहिए था। close()
IOException
PrintWriter.checkError()
out.close()
XX.close()
अपनी कोशिश / पकड़ में होना चाहिए, है ना? उदाहरण के लिए, out.close()
एक अपवाद फेंक सकता है, जिस स्थिति में bw.close()
और fw.close()
कभी नहीं बुलाया जाएगा, और fw
वह है जो बंद करने के लिए सबसे महत्वपूर्ण है।
जावा -7 में भी इस तरह का काम किया जा सकता है:
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
// ---------------------
Path filePath = Paths.get("someFile.txt");
if (!Files.exists(filePath)) {
Files.createFile(filePath);
}
Files.write(filePath, "Text to be added".getBytes(), StandardOpenOption.APPEND);
जावा 7+
जब से मैं सादे जावा का प्रशंसक हूं, मेरी विनम्र राय में, मैं कुछ सुझाव दूंगा कि यह उपर्युक्त उत्तरों का एक संयोजन है। शायद मुझे पार्टी के लिए देर हो रही है। यहाँ कोड है:
String sampleText = "test" + System.getProperty("line.separator");
Files.write(Paths.get(filePath), sampleText.getBytes(StandardCharsets.UTF_8),
StandardOpenOption.CREATE, StandardOpenOption.APPEND);
यदि फ़ाइल मौजूद नहीं है, तो यह इसे बनाता है और यदि पहले से मौजूद है, तो यह मौजूदा फ़ाइल के लिए नमूनाटेक्स्ट को जोड़ देता है । इसका उपयोग करना, आपको अपने क्लासपैथ में अनावश्यक लिबास को जोड़ने से बचाता है।
यह कोड की एक पंक्ति में किया जा सकता है। उम्मीद है की यह मदद करेगा :)
Files.write(Paths.get(fileName), msg.getBytes(), StandardOpenOption.APPEND);
Java.nio का उपयोग करना। Java.nio.file के साथ फाइलें । StandardOpenOption
PrintWriter out = null;
BufferedWriter bufWriter;
try{
bufWriter =
Files.newBufferedWriter(
Paths.get("log.txt"),
Charset.forName("UTF8"),
StandardOpenOption.WRITE,
StandardOpenOption.APPEND,
StandardOpenOption.CREATE);
out = new PrintWriter(bufWriter, true);
}catch(IOException e){
//Oh, no! Failed to create PrintWriter
}
//After successful creation of PrintWriter
out.println("Text to be appended");
//After done writing, remember to close!
out.close();
यह एक BufferedWriter
उपयोग करने वाली फ़ाइलें बनाता है , जो StandardOpenOption
मापदंडों को स्वीकार करता है, और PrintWriter
परिणामी से एक ऑटो-फ्लशिंग होता है BufferedWriter
। PrintWriter
कीprintln()
विधि, तो फ़ाइल को लिखने के लिए कहा जा सकता है।
StandardOpenOption
मापदंडों इस कोड में प्रयोग किया है: लेखन के लिए फ़ाइल को खोलता है, केवल फाइल करने के लिए जोड़ देती है, और फ़ाइल बनाता है अगर यह मौजूद नहीं है।
Paths.get("path here")
से बदला जा सकता है new File("path here").toPath()
। और Charset.forName("charset name")
वांछित को समायोजित करने के लिए संशोधित किया जा सकता है Charset
।
मैं सिर्फ छोटा विवरण जोड़ता हूं:
new FileWriter("outfilename", true)
2. और पैरामीटर (सत्य) एक विशेषता (या, इंटरफ़ेस) है जिसे परिशिष्ट ( http://docs.oracle.com/javase/7/docs/api/java/lang/Appendable.html ) कहा जाता है । यह कुछ सामग्री को विशेष फ़ाइल / स्ट्रीम के अंत में जोड़ने में सक्षम होने के लिए जिम्मेदार है। यह इंटरफ़ेस जावा 1.5 के बाद से लागू किया गया है। प्रत्येक ऑब्जेक्ट (यानी बफ़रड्राइवर, चारआयरराइटर, चारबफ़र, फाइलविटर, फिल्टरविटर, लॉगस्ट्रीम, आउटपुटस्ट्रीमविटर, पाइपेडविटर, प्रिंटस्ट्रीम, प्रिंटव्यूटर, स्ट्रिंगरबफ़र, स्ट्रिंगबॉलर, स्ट्रिंगराइटर, राइटरइस इंटरफ़ेस के साथ ) का उपयोग इस इंटरफेस के साथ किया जा सकता है।
दूसरे शब्दों में, आप अपनी gzipped फ़ाइल में कुछ सामग्री, या कुछ http प्रक्रिया जोड़ सकते हैं
नमूना, अमरूद का उपयोग:
File to = new File("C:/test/test.csv");
for (int i = 0; i < 42; i++) {
CharSequence from = "some string" + i + "\n";
Files.append(from, to, Charsets.UTF_8);
}
बफरफाइलराइटर के साथ प्रयास करें। यह मेरे साथ काम करता है।
FileWriter fileWriter;
try {
fileWriter = new FileWriter(file,true);
BufferedWriter bufferFileWriter = new BufferedWriter(fileWriter);
bufferFileWriter.append(obj.toJSONString());
bufferFileWriter.newLine();
bufferFileWriter.close();
} catch (IOException ex) {
Logger.getLogger(JsonTest.class.getName()).log(Level.SEVERE, null, ex);
}
String str;
String path = "C:/Users/...the path..../iin.txt"; // you can input also..i created this way :P
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw = new PrintWriter(new FileWriter(path, true));
try
{
while(true)
{
System.out.println("Enter the text : ");
str = br.readLine();
if(str.equalsIgnoreCase("exit"))
break;
else
pw.println(str);
}
}
catch (Exception e)
{
//oh noes!
}
finally
{
pw.close();
}
यह वही करेगा जो आप करना चाहते हैं ..
कोशिश के साथ संसाधनों का उपयोग करने के लिए बेहतर है कि सभी पूर्व जावा 7 अंत में व्यापार
static void appendStringToFile(Path file, String s) throws IOException {
try (BufferedWriter out = Files.newBufferedWriter(file, StandardCharsets.UTF_8, StandardOpenOption.APPEND)) {
out.append(s);
out.newLine();
}
}
यदि हम जावा 7 और उसके बाद के संस्करण का उपयोग कर रहे हैं और यह भी जानते हैं कि फाइल में जोड़ी जाने वाली सामग्री (जोड़ा) तो हम NIO पैकेज में newBufferedWriter विधि का उपयोग कर सकते हैं ।
public static void main(String[] args) {
Path FILE_PATH = Paths.get("C:/temp", "temp.txt");
String text = "\n Welcome to Java 8";
//Writing to the file temp.txt
try (BufferedWriter writer = Files.newBufferedWriter(FILE_PATH, StandardCharsets.UTF_8, StandardOpenOption.APPEND)) {
writer.write(text);
} catch (IOException e) {
e.printStackTrace();
}
}
नोट करने के लिए कुछ बिंदु हैं:
StandardCharsets
।try-with-resource
स्टेटमेंट का उपयोग करता है जिसमें कोशिश के बाद संसाधन स्वतः बंद हो जाते हैं।हालाँकि, ओपी ने नहीं पूछा है, लेकिन अगर हम कुछ विशिष्ट कीवर्ड वाली लाइनों की खोज करना चाहते हैं जैसे कि confidential
हम जावा में स्ट्रीम एपीआई का उपयोग कर सकते हैं:
//Reading from the file the first line which contains word "confidential"
try {
Stream<String> lines = Files.lines(FILE_PATH);
Optional<String> containsJava = lines.filter(l->l.contains("confidential")).findFirst();
if(containsJava.isPresent()){
System.out.println(containsJava.get());
}
} catch (IOException e) {
e.printStackTrace();
}
write(String string)
newLine()
FileOutputStream fos = new FileOutputStream("File_Name", true);
fos.write(data);
सही मौजूदा फ़ाइल में डेटा को जोड़ने की अनुमति देता है। अगर हम लिखेंगे
FileOutputStream fos = new FileOutputStream("File_Name");
यह मौजूदा फ़ाइल को अधिलेखित कर देगा। तो पहले दृष्टिकोण के लिए जाओ।
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class Writer {
public static void main(String args[]){
doWrite("output.txt","Content to be appended to file");
}
public static void doWrite(String filePath,String contentToBeAppended){
try(
FileWriter fw = new FileWriter(filePath, true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter out = new PrintWriter(bw)
)
{
out.println(contentToBeAppended);
}
catch( IOException e ){
// File writing/opening failed at some stage.
}
}
}
FileOutputStream stream = new FileOutputStream(path, true);
try {
stream.write(
string.getBytes("UTF-8") // Choose your encoding.
);
} finally {
stream.close();
}
फिर एक IOException को कहीं ऊपर की तरफ पकड़ें।
अपने प्रोजेक्ट में कहीं भी एक फंक्शन बनाएं और बस उस फंक्शन को कॉल करें जहाँ आपको कभी भी ज़रूरत पड़े।
दोस्तों आपको याद है कि आप लोग सक्रिय थ्रेड्स को कॉल कर रहे हैं जिन्हें आप एसिंक्रोनस रूप से कॉल नहीं कर रहे हैं और चूंकि यह सही होने के लिए 5 से 10 पृष्ठों का अच्छा होगा। क्यों न आप अपने प्रोजेक्ट पर अधिक समय दें और पहले से लिखी गई किसी भी चीज को लिखना न भूलें। ढंग से
//Adding a static modifier would make this accessible anywhere in your app
public Logger getLogger()
{
return java.util.logging.Logger.getLogger("MyLogFileName");
}
//call the method anywhere and append what you want to log
//Logger class will take care of putting timestamps for you
//plus the are ansychronously done so more of the
//processing power will go into your application
//from inside a function body in the same class ...{...
getLogger().log(Level.INFO,"the text you want to append");
...}...
/*********log file resides in server root log files********/
कोड दो की तीन पंक्तियां वास्तव में तीसरे के बाद से वास्तव में पाठ को जोड़ती हैं। : पी
पुस्तकालय
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
कोड
public void append()
{
try
{
String path = "D:/sample.txt";
File file = new File(path);
FileWriter fileWriter = new FileWriter(file,true);
BufferedWriter bufferFileWriter = new BufferedWriter(fileWriter);
fileWriter.append("Sample text in the file to append");
bufferFileWriter.close();
System.out.println("User Registration Completed");
}catch(Exception ex)
{
System.out.println(ex);
}
}
आप यह भी आज़मा सकते हैं:
JFileChooser c= new JFileChooser();
c.showOpenDialog(c);
File write_file = c.getSelectedFile();
String Content = "Writing into file"; //what u would like to append to the file
try
{
RandomAccessFile raf = new RandomAccessFile(write_file, "rw");
long length = raf.length();
//System.out.println(length);
raf.setLength(length + 1); //+ (integer value) for spacing
raf.seek(raf.length());
raf.writeBytes(Content);
raf.close();
}
catch (Exception e) {
//any exception handling method of ur choice
}
मैं अपाचे कॉमन्स परियोजना का सुझाव दे सकता हूं । यह प्रोजेक्ट पहले से ही आपको क्या करने की एक रूपरेखा प्रदान करता है (यानी संग्रह के लचीले फ़िल्टरिंग)।
निम्नलिखित विधि आपको कुछ फ़ाइल में पाठ संलग्न करना चाहिए:
private void appendToFile(String filePath, String text)
{
PrintWriter fileWriter = null;
try
{
fileWriter = new PrintWriter(new BufferedWriter(new FileWriter(
filePath, true)));
fileWriter.println(text);
} catch (IOException ioException)
{
ioException.printStackTrace();
} finally
{
if (fileWriter != null)
{
fileWriter.close();
}
}
}
वैकल्पिक रूप से उपयोग करना FileUtils
:
public static void appendToFile(String filePath, String text) throws IOException
{
File file = new File(filePath);
if(!file.exists())
{
file.createNewFile();
}
String fileContents = FileUtils.readFileToString(file);
if(file.length() != 0)
{
fileContents = fileContents.concat(System.lineSeparator());
}
fileContents = fileContents.concat(text);
FileUtils.writeStringToFile(file, fileContents);
}
यह कुशल नहीं है लेकिन ठीक काम करता है। लाइन विराम सही ढंग से संभाला जाता है और एक नई फ़ाइल बनाई जाती है यदि कोई अभी तक मौजूद नहीं था।
यह कोड आपकी आवश्यकता को पूरा करेगा:
FileWriter fw=new FileWriter("C:\\file.json",true);
fw.write("ssssss");
fw.close();
यदि आप विशिष्ट लाइनों में कुछ पाठ जोड़ना चाहते हैं, तो आप पहले पूरी फ़ाइल पढ़ सकते हैं, पाठ को जहाँ चाहें वहाँ जोड़ सकते हैं और फिर नीचे दिए गए कोड की तरह सब कुछ अधिलेखित कर सकते हैं:
public static void addDatatoFile(String data1, String data2){
String fullPath = "/home/user/dir/file.csv";
File dir = new File(fullPath);
List<String> l = new LinkedList<String>();
try (BufferedReader br = new BufferedReader(new FileReader(dir))) {
String line;
int count = 0;
while ((line = br.readLine()) != null) {
if(count == 1){
//add data at the end of second line
line += data1;
}else if(count == 2){
//add other data at the end of third line
line += data2;
}
l.add(line);
count++;
}
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
createFileFromList(l, dir);
}
public static void createFileFromList(List<String> list, File f){
PrintWriter writer;
try {
writer = new PrintWriter(f, "UTF-8");
for (String d : list) {
writer.println(d.toString());
}
writer.close();
} catch (FileNotFoundException | UnsupportedEncodingException e) {
e.printStackTrace();
}
}
मेरा जवाब:
JFileChooser chooser= new JFileChooser();
chooser.showOpenDialog(chooser);
File file = chooser.getSelectedFile();
String Content = "What you want to append to file";
try
{
RandomAccessFile random = new RandomAccessFile(file, "rw");
long length = random.length();
random.setLength(length + 1);
random.seek(random.length());
random.writeBytes(Content);
random.close();
}
catch (Exception exception) {
//exception handling
}
/**********************************************************************
* it will write content to a specified file
*
* @param keyString
* @throws IOException
*********************************************************************/
public static void writeToFile(String keyString,String textFilePAth) throws IOException {
// For output to file
File a = new File(textFilePAth);
if (!a.exists()) {
a.createNewFile();
}
FileWriter fw = new FileWriter(a.getAbsoluteFile(), true);
BufferedWriter bw = new BufferedWriter(fw);
bw.append(keyString);
bw.newLine();
bw.close();
}// end of writeToFile()
आप फ़ाइल में सामग्री को जोड़ने के लिए follong कोड का उपयोग कर सकते हैं:
String fileName="/home/shriram/Desktop/Images/"+"test.txt";
FileWriter fw=new FileWriter(fileName,true);
fw.write("here will be you content to insert or append in file");
fw.close();
FileWriter fw1=new FileWriter(fileName,true);
fw1.write("another content will be here to be append in the same file");
fw1.close();
1.7 दृष्टिकोण:
void appendToFile(String filePath, String content) throws IOException{
Path path = Paths.get(filePath);
try (BufferedWriter writer =
Files.newBufferedWriter(path,
StandardOpenOption.APPEND)) {
writer.newLine();
writer.append(content);
}
/*
//Alternative:
try (BufferedWriter bWriter =
Files.newBufferedWriter(path,
StandardOpenOption.WRITE, StandardOpenOption.APPEND);
PrintWriter pWriter = new PrintWriter(bWriter)
) {
pWriter.println();//to have println() style instead of newLine();
pWriter.append(content);//Also, bWriter.append(content);
}*/
}