当前位置: 首页 > 知识库问答 >
问题:

将字符串写入文件

印宏阔
2023-03-14

我想向文件写入一些内容。我找到了这个代码

private void writeToFile(String data) {
    try {
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(context.openFileOutput("config.txt", Context.MODE_PRIVATE));
        outputStreamWriter.write(data);
        outputStreamWriter.close();
    }
    catch (IOException e) {
        Log.e("Exception", "File write failed: " + e.toString());
    } 
}

代码看起来很有逻辑,但是手机里找不到config.txt文件。< br >如何检索包含该字符串的文件?

共有3个答案

贺俊杰
2023-03-14

此方法采用文件名

根据FileOperation的成功或失败,返回类型为布尔值。

重要提示:尝试在异步任务中执行此操作,因为文件IO会导致主线程上的ANR。

 public boolean writeToFile(String dataToWrite, String fileName) {

            String directoryPath =
                    Environment.getExternalStorageDirectory()
                            + File.separator
                            + "LOGS"
                            + File.separator;

            Log.d(TAG, "Dumping " + fileName +" At : "+directoryPath);

            // Create the fileDirectory.
            File fileDirectory = new File(directoryPath);

            // Make sure the directoryPath directory exists.
            if (!fileDirectory.exists()) {

                // Make it, if it doesn't exist
                if (fileDirectory.mkdirs()) {
                    // Created DIR
                    Log.i(TAG, "Log Directory Created Trying to Dump Logs");
                } else {
                    // FAILED
                    Log.e(TAG, "Error: Failed to Create Log Directory");
                    return false;
                }
            } else {
                Log.i(TAG, "Log Directory Exist Trying to Dump Logs");
            }

            try {
                // Create FIle Objec which I need to write
                File fileToWrite = new File(directoryPath, fileName + ".txt");

                // ry to create FIle on card
                if (fileToWrite.createNewFile()) {
                    //Create a stream to file path
                    FileOutputStream outPutStream = new FileOutputStream(fileToWrite);
                    //Create Writer to write STream to file Path
                    OutputStreamWriter outPutStreamWriter = new OutputStreamWriter(outPutStream);
                    // Stream Byte Data to the file
                    outPutStreamWriter.append(dataToWrite);
                    //Close Writer
                    outPutStreamWriter.close();
                    //Clear Stream
                    outPutStream.flush();
                    //Terminate STream
                    outPutStream.close();
                    return true;
                } else {
                    Log.e(TAG, "Error: Failed to Create Log File");
                    return false;
                }

            } catch (IOException e) {
                Log.e("Exception", "Error: File write failed: " + e.toString());
                e.fillInStackTrace();
                return false;
            }
        }
令狐灿
2023-03-14

编写一个简化的文本文件:

private void writeToFile(String content) {
    try {
        File file = new File(Environment.getExternalStorageDirectory() + "/test.txt");

        if (!file.exists()) {
            file.createNewFile();
        }
        FileWriter writer = new FileWriter(file);
        writer.append(content);
        writer.flush();
        writer.close();
    } catch (IOException e) {
    }
}
轩辕天佑
2023-03-14

如果没有指定路径,您的文件将保存在您的应用程序空间中(< code >/data/data/your . app . name/)。

因此,您最好将文件保存到外部存储(不一定是SD卡,它可以是默认存储)。

你可能想通过阅读官方文件来深入了解这个主题

综合:

将此权限添加到清单:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

它包括读权限,所以不需要指定它。

将文件保存在您指定的位置(这取自我的实时代码,所以我确定它有效):

public void writeToFile(String data)
{
    // Get the directory for the user's public pictures directory.
    final File path =
        Environment.getExternalStoragePublicDirectory
        (
            //Environment.DIRECTORY_PICTURES
            Environment.DIRECTORY_DCIM + "/YourFolder/"
        );

    // Make sure the path directory exists.
    if(!path.exists())
    {
        // Make it, if it doesn't exit
        path.mkdirs();
    }

    final File file = new File(path, "config.txt");

    // Save your stream, don't forget to flush() it before closing it.

    try
    {
        file.createNewFile();
        FileOutputStream fOut = new FileOutputStream(file);
        OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
        myOutWriter.append(data);

        myOutWriter.close();

        fOut.flush();
        fOut.close();
    }
    catch (IOException e)
    {
        Log.e("Exception", "File write failed: " + e.toString());
    } 
}

[编辑]好,尝试如下操作(不同路径-外部存储上的文件夹):

    String path =
        Environment.getExternalStorageDirectory() + File.separator  + "yourFolder";
    // Create the folder.
    File folder = new File(path);
    folder.mkdirs();

    // Create the file.
    File file = new File(folder, "config.txt");
 类似资料:
  • 问题内容: 我将日志保存到sdcard上的.txt文件中,但是一旦保存了两行,它就会覆盖它并重新开始? 这是我的代码: 在恢复中挂载/ data后,/ sdcard和/ data / media / 0中的日志文件会显示完整的日志历史记录,但在设备开机时不会显示完整的日志历史记录 问题答案: 这是完成的方式。以下示例代码在单击提交按钮后将详细信息保存到文件中: 希望这可以帮助 :)

  • wef:使用apache poi写入xlsm(Excel 2007) 当我向文件中写入一个简单的字符串时,我无法打开该文件。错误-“Excel无法打开文件“Test1.xlsm”,因为文件格式或文件扩展名无效”

  • 问题内容: 我认为能够将文本文件读入和写出字符串数组的能力是相当普遍的要求。从一种语言开始消除最初访问数据库的需求时,它也非常有用。Golang中是否存在? 例如 和 我宁愿使用现有的而不是重复的。 问题答案: 从Go1.1版本开始,有一个bufio.Scanner API可以轻松读取文件中的行。考虑上面的以下示例,该示例使用Scanner重写:

  • 问题内容: 我试图将比对的蛋白质序列输出到文件,但是,每次我尝试将字符串写入文件时,输出字符串都会被截断。我尝试写入的字符串长4603个字符,并以正确的字符数打印到控制台。我要附加的第一段代码与输出变量本身有关。我将在此处包括完整的字符串,因为对我而言,在写入文件时字符串被截断的方式是可以重现的。 使用此代码段,文件的输出应等于al1。但是,该文件的输出如下: 将这两个序列粘贴到文字处理器中并计算

  • 我有几个输出侦听器正在实现。它可以是写到stdout或文件的,也可以是写到内存或任何其他输出目标;因此,我在方法中指定作为(an)参数。 现在,我收到了。在这里向流写入的最佳方式是什么? 我应该只使用吗?我可以给它字节,但如果目标流是字符流,那么它会自动转换吗? 我需要用这里的一些桥流来代替吗?

  • 问题内容: 我有几个正在实现OutputStream的输出侦听器。它可以是写到stdout或文件的PrintStream,也可以写到内存或任何其他输出目标。因此,我在方法中将OutputStream指定为参数。 现在,我已经收到了字符串。在此处写入流的最佳方法是什么? 我应该只使用Writer.write(message.getBytes())吗?我可以给它提供字节,但是如果目标流是字符流,那么它

  • 编程相对较新。我想读取一个URL,修改文本字符串,然后将其写入以行分隔的csv文本文件。 阅读 但我无法将相同的字符串写入文件——它只会变成一行(请参阅下面的循环,尝试1) 我想我正在寻找一种方法,在FileWriter或BufferedWriter循环中,将字符串finalDataA转换为数组字符串(即包括字符串后缀[0]),但我还没有找到这样一种方法,不会给出类型“不能”的错误将String转

  • 问题内容: 我正在尝试使用以下脚本创建一个包含Python中字符串列表内容的csv文件。但是,当我检查输出文件时,发现每个字符都用逗号分隔。如何指示定界列表中的每个字符串而不是每个字符? 我检查了PEP 305,找不到任何特定的东西。 问题答案: 该方法以iterable作为参数。您的结果集必须是列表(列)的列表(行)。 将 行 参数写入编写者的文件对象,并根据当前方言格式化。 执行以下任一操作: