file 안드로이드 - Java를 사용하여 String을 텍스트 파일에 저장하려면 어떻게합니까?




읽기 txt (17)

나는 이런 종류의 작업을 가능할 때마다 라이브러리에 의존하는 것을 선호한다. 이것은 실수로 우발적으로 중요한 단계를 생략 할 가능성을 낮 춥니 다 (위에서 만든 늑대와 같은 실수). 일부 라이브러리는 위에 제안하지만, 이런 종류의 일은 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
}

자바에서는 "text"라는 문자열 변수에 텍스트 필드의 텍스트가 있습니다.

"text"변수의 내용을 파일에 저장할 수 있습니까?


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);
}

ArrayList를 사용하여 예를 들어 TextArea의 모든 내용을 저장하고 작성자가 문자열 줄을 쓴 것처럼 저장을 호출하여 매개 변수로 보내면 "for"줄을 한 줄씩 사용하여 끝에 ArrayList를 쓸 수 있습니다 우리는 txt 파일에 내용 TextArea 될 것입니다. 뭔가 이해가되지 않는다면 미안하지만 Google 번역자와 나는 영어를 못해.

Windows 메모장을보고 항상 선을 넘기지 않고 한 줄에 모두 표시하고 워드 패드를 사용합니다.

개인 무효 SaveActionPerformed (액션 이벤트 evt) {

String NameFile = Name.getText();
ArrayList< String > Text = new ArrayList< String >();

Text.add(TextArea.getText());

SaveFile(NameFile, Text);

}

공공 무효 SaveFile (문자열 이름, ArrayList <문자열> 메시지) {

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);        

}


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


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>

org.apache.commons.io.FileUtils 사용하기 :

FileUtils.writeStringToFile(new File("log.txt"), "my string", Charset.defaultCharset());

문자열에서 캐리지 리턴 문자를 파일로 유지하려는 경우 코드 예제가 있습니다.

    jLabel1 = new JLabel("Enter SQL Statements or SQL Commands:");
    orderButton = new JButton("Execute");
    textArea = new JTextArea();
    ...


    // String captured from JTextArea()
    orderButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent ae) {
            // When Execute button is pressed
            String tempQuery = textArea.getText();
            tempQuery = tempQuery.replaceAll("\n", "\r\n");
            try (PrintStream out = new PrintStream(new FileOutputStream("C:/Temp/tempQuery.sql"))) {
                out.print(tempQuery);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println(tempQuery);
        }

    });

바이너리 데이터가 아닌 단순히 텍스트를 출력하는 경우 다음이 작동합니다.

PrintWriter out = new PrintWriter("filename.txt");

그런 다음 임의의 출력 스트림에서와 같이 String을 작성하십시오.

out.println(text);

예외 처리가 필요합니다. 쓰기가 끝나면 out.close() 를 호출해야합니다.

Java 7 이상을 사용하는 경우 " try-with-resources 문 "을 사용하여 완료되면 PrintStream 을 자동으로 닫습니다 (즉, 블록을 종료).

try (PrintWriter out = new PrintWriter("filename.txt")) {
    out.println(text);
}

이전과 같이 java.io.FileNotFoundException 을 명시 적으로 throw해야합니다.


Apache Commons IO의 FileUtils.writeStringToFile() 을 사용하십시오. 이 특별한 바퀴를 재발견 할 필요가 없습니다.


가장 좋은 방법은 Files.write(Path path, Iterable<? extends CharSequence> lines, OpenOption... options) .

String text = "content";
Path path = Paths.get("path", "to", "file");
Files.write(path, Arrays.asList(text));

javadoc 참조하십시오.

텍스트 줄을 파일에 씁니다. 각 행은 char 순서이며 시스템 속성 인 line.separator에 정의 된대로 각 행이 플랫폼의 행 분리 기호에 의해 종료 된 순서로 파일에 기록됩니다. 문자는 지정된 charset을 사용하여 바이트로 인코딩됩니다.

options 매개 변수는 파일 작성 또는 열기 방법을 지정합니다. 옵션이없는 경우,이 메소드는 CREATE, TRUNCATE_EXISTING 및 WRITE 옵션이있는 것처럼 작동합니다. 즉, 파일을 작성하기 위해 파일을 열거 나 파일이 존재하지 않는 경우 파일을 작성하거나 기존의 일반 파일을 크기 0으로 자릅니다.이 메소드는 모든 행이 기록 될 때 파일이 닫히도록 보장합니다 또는 I / O 오류 또는 다른 런타임 예외가 발생 함). I / O 오류가 발생하면 파일이 작성되거나 잘린 후 또는 일부 바이트가 파일에 기록 된 후에 오류가 발생할 수 있습니다.

주의하십시오. 나는 사람들이 이미 Java에 내장 된 Files.write 응답 한 것을 Files.write .하지만 아무 대답도없는 특별한 대답은 byte[] 대신 CharSequence (String)의 Iterable을 사용하는 메서드의 오버로드 된 버전이다 byte[] 배열, 따라서 text.getBytes() 필요하지 않습니다, 조금 청소기 생각합니다.


그냥 내 프로젝트에서 비슷한 일을했다. FileWriter 를 사용하면 작업을 간소화 할 수 있습니다. 그리고 여기에서 멋진 tutorial 찾을 수 있습니다.

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)
    {
    }
}

자바 파일 API 살펴보기

간단한 예 :

try (PrintStream out = new PrintStream(new FileOutputStream("filename.txt"))) {
    out.print(text);
}

Apache Commons IO 에는이를 수행하기위한 훌륭한 방법이 포함되어 있습니다. 특히 FileUtils에는 다음과 같은 메소드가 포함되어 있습니다.

static void writeStringToFile(File file, String data) 

하나의 메소드 호출로 파일에 텍스트를 쓸 수있다.

FileUtils.writeStringToFile(new File("test.txt"), "Hello File");

파일의 인코딩을 지정하는 것도 고려할 수 있습니다.


이것을 사용하면 매우 읽기 쉽습니다.

import java.nio.file.Files;
import java.nio.file.Paths;

Files.write(Paths.get(path), lines.getBytes(), StandardOpenOption.WRITE);

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

이 메소드를 클래스에 삽입 할 수 있습니다. 기본 메소드가있는 클래스에서이 메소드를 사용하는 경우, 정적 키워드를 추가하여이 클래스를 static으로 변경하십시오. 어느 쪽이든 java.io. *를 가져와야 작동합니다 File, FileWriter 및 BufferedWriter는 인식되지 않습니다.


한 블록의 텍스트를 파일로 푸시하는 데 신경 쓰면 매번이 블록을 덮어 씁니다.

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
        }
    }
}

이 예제에서는 사용자가 파일 선택기를 사용하여 파일을 선택할 수 있습니다.


$ git log --diff-filter=D --summary  | grep "delete" | sort






java file file-io text-files