如何在android的内部/外部存储中保存解析的文本文件

2023-12-02

目前我正在从事的项目需要解析远程文本文件并将其存储在本地存储(内部/外部)中。我能够解析文本文件,但无法将其存储在 SDCARD 中。这是我的代码:

package com.exercise.AndroidInternetTxt;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.MalformedURLException;
import java.net.URL;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

public class AndroidInternetTxt extends Activity {

    TextView textMsg, textPrompt;
    final String textSource = "http://sites.google.com/site/androidersite"
                                                              + "/text.txt";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        textPrompt = (TextView) findViewById(R.id.textprompt);
        textMsg = (TextView) findViewById(R.id.textmsg);
        textPrompt.setText("Wait...");
        URL textUrl;
        try {
            textUrl = new URL(textSource);
            BufferedReader bufferReader = new BufferedReader(
                    new InputStreamReader(textUrl.openStream()));
            String StringBuffer;
            String stringText = "";
            while ((StringBuffer = bufferReader.readLine()) != null) {
                stringText += StringBuffer;
            }
            bufferReader.close();
            textMsg.setText(stringText);
            // Saving the parsed data.........
            File myFile = new File("sdcard/mysdfile.txt");
            if (!myFile.exists()) {
                myFile.mkdirs();
            }
            myFile = new File("sdcard/mysdfile.txt");
            myFile.createNewFile();
            FileOutputStream fOut = new FileOutputStream(myFile);
            OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
            myOutWriter.append(textMsg.getText());
            myOutWriter.close();
            fOut.close();
            Toast.makeText(getBaseContext(), "Done writing SD 'mysdfile.txt'",
                Toast.LENGTH_SHORT).show();
        } catch (MalformedURLException e) {
            e.printStackTrace();
            textMsg.setText(e.toString());
        } catch (IOException e) {
            e.printStackTrace();
            textMsg.setText(e.toString());
        }
        textPrompt.setText("Finished!");
    }
}

这是我的清单文件 -

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.exercise.AndroidInternetTxt"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="4" />
    <uses-permission android:name="android.permission.INTERNET"/>

    <application android:label="@string/app_name">
        <activity android:name=".AndroidInternetTxt"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE"/>
</manifest> 

然而,我的问题是 -

  • 如何将解析后的文本数据存储在 SDCARD 或手机内存中的文件中?
  • 有什么方法可以使用计时器以预定义的间隔检查 URL?

任何代码示例对我来说都非常好。


首先,你的AndroidManifest.xml文件是正确的。所以没有必要纠正这一点。不过我建议将您的权限组织在一处。

将文件写入内部存储器

FileOutputStream fOut = openFileOutput("myinternalfile.txt",MODE_WORLD_READABLE);
OutputStreamWriter osw = new OutputStreamWriter(fOut);

//---write the contents to the file---
osw.write(strFileData);
osw.flush();
osw.close();

将文件写入外部 SD 卡

//This will get the SD Card directory and create a folder named MyFiles in it.
File sdCard = Environment.getExternalStorageDirectory();
File directory = new File (sdCard.getAbsolutePath() + "/MyFiles");
directory.mkdirs();

//Now create the file in the above directory and write the contents into it
File file = new File(directory, "mysdfile.txt");
FileOutputStream fOut = new FileOutputStream(file);
OutputStreamWriter osw = new OutputStreamWriter(fOut);
osw.write(strFileData);
osw.flush();
osw.close();

注意:如果在模拟器上运行,请确保您已在 AVD 属性中启用 SD 卡支持并为其分配适当的空间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在android的内部/外部存储中保存解析的文本文件 的相关文章

随机推荐

  • Visual Studio 减慢应用程序速度

    这是一个模糊的问题 但是对于 Visual Studio 减慢应用程序速度我能做些什么吗 如果我在 Visual Studio 之外运行可执行文件 它会以非常可接受的速度运行 如果我在启用调试器的情况下在 Visual Studio 中运行
  • .sheet:仅显示一次,然后不再显示

    使用Beta4 似乎该错误仍然存 在 以下视图序列 列表 其中点击列表条目可打开另一个列表 允许呈现ListView正好一次 这onDisappear从未被调用过 所以showModal标志发生变化 但不会触发重新显示ListView再次点
  • 如何从 Information_Schema.Columns 获取列的主键或键约束详细信息?

    如何从 Information Schema Columns 获取列的主键或键约束详细信息 我从 sys indexes 获取输出 但是在使用 Information Schema 加入查询时 我得到重复的记录 SELECT COLUMN
  • Git 推送仅适用于裸存储库?

    当我尝试 git push origin master 到外部磁盘上的远程存储库时 出现 git 警告 指出在下一个版本的 git 中 pusing 签出存储库将默认被拒绝 在外部磁盘上 我已签出项目 并且我想将我在计算机上所做的更改发送到
  • 在 PowerShell 2.0 中将编码设置为 ANSI

    我想使用参数将文件的编码设置为 ANSI Encoding of the Set Contentcmdlet 我尝试了这个 但它不起作用 Set Content LiteralPath filePath Encoding Default P
  • 当被测试者在 Perl 中使用 TAP 失败退出时,是否可以测试预期的错误?

    假设您正在运行一些单元测试 并且您想查看正在测试的方法 或脚本或函数或其他内容 是否失败 如何设置这样的测试 我希望有这样的事情 ok obj gt method my bad params DEATH method dies as exp
  • _=> 这个下划线在 Lambda 表达式中是什么意思?

    lambda 表达式是什么样的 gt expr mean 目的是什么 作为 lambda 的输入 Example int count 0 list ForEach gt count 1 这是当您不关心参数时使用的约定
  • 如何在 Android 中启用 GPS

    如何在 Android 中打开 GPS 关闭时检索当前位置 我测试了两种方法 private void turnGPSOn String provider Settings Secure getString getContentResolv
  • 重新排列方程

    我的 C 代码中有以下等式 k dl 1 0 pHold centre pHold pHold 2 0 centre centre square 2 0 centre 我知道浮点除法比乘法昂贵得多 我已经为此苦苦挣扎了一段时间 有没有什么办
  • 等待函数完成执行并使用结​​果

    这是场景 我有一个活动 A 它有一个按钮和文本视图 我有另一个类 B 其中包含执行各种功能的方法 创建类 B 的实例后 当单击按钮时 会从 A 调用它的公共方法之一 该方法需要一段时间来执行 它调用类中另一个耗时的私有方法 并返回类 B 的
  • 如何通过单击 JSP 页面中的超链接或按钮将当前项目传递给 Java 方法?

    我有一个 HTML 表 其中显示从数据库中获取的行 我希望用户能够通过单击每行旁边的删除超链接或按钮来删除行 当用户单击每个删除超链接或按钮时 如何在页面上调用 JSP 函数 以便我可以从数据库中删除该行的条目 到底应该做什么 a or a
  • 另一个 Java 泛型“不兼容类型”编译错误

    我正在编写一些代码并遇到了一个incompatible types编译错误 这就是我所拥有的 public interface Expression
  • 对于 Windows Server 2008,WebRequest 无法通过 TLS 1.1 / 1.2

    我正在运行一个 net 4 5 应用程序 该应用程序向仅支持 TLS 1 1 和 TLS 1 2 的外部服务器发出安全出站请求 当我从 Windows 8 8 1 主机运行该应用程序时一切正常 但在 Windows Server 2008
  • AngularJS - 一个简单的无限滚动

    我正在尝试编写一个与此处找到的类似的小型无限滚动 http jsfiddle net vojtajina U7Bz9 我已经能够显示前 5 条数据 但是在滚动时 其他项目不会显示 HTML div ul li i Title li ul d
  • 将 data.frame 列从因子转换为字符

    我有一个数据框 我们就这样称呼他吧bob gt head bob phenotype exclusion GSM399350 3 4 8 25 44 11b 11c 19 NK1 1 Gr1 TER119 GSM399351 3 4 8 2
  • iOS 11 中 UILabel 错误换行

    我在使用没有自动布局的 XIB 的应用程序时遇到问题 我不知道这是否是重要信息 我有使用自动换行的 2 行 UILabel 在 iOS 10 中 自动换行工作正常 第一行包含一个单词 特殊字符 例如 符号 例子 然后 在 iOS 11 上
  • 如何从 git stash 中提取单个文件(或对文件的更改)?

    是否可以从 git 存储中提取单个文件或文件的差异 而不弹出存储更改集 On the git 存储您可以在联机帮助页中阅读 在 讨论 部分中 选项 描述之后 存储表示为提交 其树记录了提交的状态 工作目录 其第一个父目录是 HEAD 处的提
  • 在“appdata”文件夹内搜索文件夹

    在创建文件夹之前尝试检查 appdata 文件夹中是否存在文件夹 因此我确实使用以下代码获取 file list GTLQueryDrive folderExistsQuery GTLQueryDrive queryForFilesList
  • 如何从R中不规则长度的行尾取出一组数字?

    我需要从长度不规则的行中选取一些数字 如下所示 AAAAAAAAA 250 00 BBB 240 00 CCCCCCC 13 00 我需要捕获 250 00 240 00 和 13 00 但由于数字和字符串都是不规则的 我不能使用 subs
  • 如何在android的内部/外部存储中保存解析的文本文件

    目前我正在从事的项目需要解析远程文本文件并将其存储在本地存储 内部 外部 中 我能够解析文本文件 但无法将其存储在 SDCARD 中 这是我的代码 package com exercise AndroidInternetTxt import