如何使用Java将string保存到文本文件?
在Java中,我有一个名为“text”的stringvariables的文本字段中的文本。
如何将“文本”variables的内容保存到文件中?
如果你只是输出文本,而不是任何二进制数据,下面的工作:
PrintWriter out = new PrintWriter("filename.txt");
然后,写下你的string,就像你对任何输出stream一样:
out.println(text);
您将需要exception处理,一如既往。 out.close()
一定要调用out.close()
。
如果您使用的是Java 7或更高版本,则可以使用“ try-with-resources语句 ”,当您完成后(即退出该块),它将自动closures您的PrintStream
,如下所示:
try( PrintWriter out = new PrintWriter( "filename.txt" ) ){ out.println( text ); }
您仍然需要像以前一样显式抛出java.io.FileNotFoundException
。
Apache Commons IO包含了一些很好的方法,特别是FileUtils包含以下方法:
static void writeStringToFile(File file, String data)
它允许您在一个方法调用中将文本写入文件:
FileUtils.writeStringToFile(new File("test.txt"), "Hello File");
你也可能要考虑指定文件的编码。
只是在我的项目中做了类似的事情。 使用FileWriter将简化您的工作的一部分。 在这里你可以find很好的教程 。
BufferedWriter writer = null; try { writer = new BufferedWriter( new FileWriter( yourfilename)); writer.write( yourstring); } catch ( IOException e) { } finally { try { if ( writer != null) writer.close( ); } catch ( IOException e) { } }
看一下Java文件API
一个简单的例子:
try (PrintStream out = new PrintStream(new FileOutputStream("filename.txt"))) { out.print(text); }
使用Apache Commons IO中的 FileUtils.writeStringToFile()
。 没有必要重新发明这个特定的车轮。
在Java 7中,你可以这样做:
String content = "Hello File!"; String path = "C:/a.txt"; Files.write( Paths.get(path), content.getBytes(), StandardOpenOption.CREATE);
这里有更多信息: http : //www.drdobbs.com/jvm/java-se-7-new-file-io/231600403
你可以使用修改下面的代码来编写你的文件从任何类或函数处理文本。 不过为什么世界需要一个新的文本编辑器呢?
import java.io.*; public class Main { public static void main(String[] args) { try { String str = "SomeMoreTextIsHere"; File newTextFile = new File("C:/thetextfile.txt"); FileWriter fw = new FileWriter(newTextFile); fw.write(str); fw.close(); } catch (IOException iox) { //do stuff with exception iox.printStackTrace(); } } }
使用Apache Commons IO api。 这很简单
使用API作为
FileUtils.writeStringToFile(new File("FileNameToWrite.txt"), "stringToWrite");
Maven依赖
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency>
import java.io.*; private void stringToFile( String text, String fileName ) { try { File file = new File( fileName ); // if file doesnt exists, then create it if ( ! file.exists( ) ) { file.createNewFile( ); } FileWriter fw = new FileWriter( file.getAbsoluteFile( ) ); BufferedWriter bw = new BufferedWriter( fw ); bw.write( text ); bw.close( ); //System.out.println("Done writing to " + fileName); //For testing } catch( IOException e ) { System.out.println("Error: " + e); e.printStackTrace( ); } } //End method stringToFile
你可以插入这个方法到你的类中。 如果您在具有main方法的类中使用此方法,请通过添加静态关键字将此类更改为static。 无论哪种方式,您将需要导入java.io. *使其工作,否则File,FileWriter和BufferedWriter将不会被识别。
我更喜欢依靠图书馆来尽可能地进行这种操作。 这使我不太可能不小心忽略了一个重要的步骤(如上面犯的错误wolfsnipes)。 上面提到了一些图书馆,但是我最喜欢的是Google Guava 。 番石榴有一个名为Files的类,它可以很好地完成这个任务:
// This is where the file goes. File destination = new File("file.txt"); // This line isn't needed, but is really useful // if you're a beginner and don't know where your file is going to end up. System.out.println(destination.getAbsolutePath()); try { Files.write(text, destination, Charset.forName("UTF-8")); } catch (IOException e) { // Useful error handling here }
你可以这样做:
import java.io.*; import java.util.*; class WriteText { public static void main(String[] args) { try { String text = "Your sample content to save in a text file."; BufferedWriter out = new BufferedWriter(new FileWriter("sample.txt")); out.write(text); out.close(); } catch (IOException e) { System.out.println("Exception "); } return ; } };
使用这个,它是非常可读的:
import java.nio.file.Files; import java.nio.file.Paths; Files.write(Paths.get(path), lines.getBytes(), StandardOpenOption.WRITE);
使用Java 7
:
public static void writeToFile(String text, String targetFilePath) throws IOException { Path targetPath = Paths.get(targetFilePath); byte[] bytes = text.getBytes(StandardCharsets.UTF_8); Files.write(targetPath, bytes, StandardOpenOption.CREATE); }
使用org.apache.commons.io.FileUtils:
FileUtils.writeStringToFile(new File("log.txt"), "my string", Charset.defaultCharset());
如果你需要创build基于单个string的文本文件:
import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; public class StringWriteSample { public static void main(String[] args) { String text = "This is text to be saved in file"; try { Files.write(Paths.get("my-file.txt"), text.getBytes()); } catch (IOException e) { e.printStackTrace(); } } }
如果您只关心将一个文本块压入文件,则每次都会覆盖它。
JFileChooser chooser = new JFileChooser(); int returnVal = chooser.showSaveDialog(this); if (returnVal == JFileChooser.APPROVE_OPTION) { FileOutputStream stream = null; PrintStream out = null; try { File file = chooser.getSelectedFile(); stream = new FileOutputStream(file); String text = "Your String goes here"; out = new PrintStream(stream); out.print(text); //This will overwrite existing contents } catch (Exception ex) { //do something } finally { try { if(stream!=null) stream.close(); if(out!=null) out.close(); } catch (Exception ex) { //do something } } }
这个例子允许用户使用文件select器来select一个文件。
最好在finally块中closureswriter / outputstream,以防万一发生
finally{ if(writer != null){ try{ writer.flush(); writer.close(); } catch(IOException ioe){ ioe.printStackTrace(); } } }
您可以使用ArrayList将TextArea的所有内容作为例子,并通过调用save来发送参数,因为写者只是写了string行,然后我们用“for”行逐行写我们的ArrayList我们将在txt文件中内容TextArea。 如果有什么不合理的话,我很遗憾的是谷歌翻译和我不会说英语的人。
看Windows记事本,它并不总是跳线,并显示在一行中,使用写字板确定。
private void SaveActionPerformed(java.awt.event.ActionEvent evt){
String NameFile = Name.getText(); ArrayList< String > Text = new ArrayList< String >(); Text.add(TextArea.getText()); SaveFile(NameFile, Text);
}
public void SaveFile(String name,ArrayList <String> message){
path = "C:\\Users\\Paulo Brito\\Desktop\\" + name + ".txt"; File file1 = new File(path); try { if (!file1.exists()) { file1.createNewFile(); } File[] files = file1.listFiles(); FileWriter fw = new FileWriter(file1, true); BufferedWriter bw = new BufferedWriter(fw); for (int i = 0; i < message.size(); i++) { bw.write(message.get(i)); bw.newLine(); } bw.close(); fw.close(); FileReader fr = new FileReader(file1); BufferedReader br = new BufferedReader(fr); fw = new FileWriter(file1, true); bw = new BufferedWriter(fw); while (br.ready()) { String line = br.readLine(); System.out.println(line); bw.write(line); bw.newLine(); } br.close(); fr.close(); } catch (IOException ex) { ex.printStackTrace(); JOptionPane.showMessageDialog(null, "Error in" + ex);
}