gpt4 book ai didi

android - 从多个 Activity 访问文件。

转载 作者:行者123 更新时间:2023-11-29 14:05:53 24 4
gpt4 key购买 nike

使我在一个 Activity (例如 Filewriter.java)中创建的文件可用于(用于数据操作)我应用程序中的所有其他 Activity 的最佳方法是什么?我已确保使用相同的文件名,但我如何确保我在任何地方都访问同一个文件?我需要在 2 个文件上实现它,一个包含字符串名称,另一个包含整数。我使用 writeUTF() 创建了字符串文件;

这里是从之前的 Activity (UI)接收数据并将内容写入文件的代码。我想从另一个 UI Activity 访问同一个文件...

    package com.shuaib669.bunkrecord;

import java.io.DataOutputStream;
import java.io.IOException;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

public class filewriter extends Activity{

String[] newText = new String[7];
String[] newNum = new String[7];

int[] no_of_classes = new int[7];

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);


Bundle extras = getIntent().getExtras();
newText = extras.getStringArray("com.shuaib669.bunkrecord.thetext");
newNum = extras.getStringArray("com.shuaib669.bunkrecord.thenum");
finish();

if (newText != null && newNum != null){

try {
// open subject.txt and classes.bin for writing
DataOutputStream out1 = new DataOutputStream(openFileOutput("subject.txt", Context.MODE_WORLD_READABLE));
DataOutputStream out2 = new DataOutputStream(openFileOutput("classses.bin", Context.MODE_WORLD_READABLE));

for(int x=0;x<7;x++){

try{
//converting string representation of no.s into integers
no_of_classes[x]=Integer.parseInt(newNum[x]);
}
catch(Exception e){
e.printStackTrace();
}
}
for(int x=0;x<7;x++){

if(newText[x]==null)
out1.writeUTF("\n");
else if(newText[x]==" " || newText[x]=="\n" || newText[x]=="\t")
out1.writeUTF("\n");
else
out1.writeUTF(newText[x]);


if(newNum[x]==null)
out2.writeInt((Integer) null);
else
out2.writeInt(no_of_classes[x]);


}

out1.close();
}
catch(IOException e){
Log.e("Data Input Sample", "I/O Error");
}
}


startNextMatchingActivity(new Intent("com.shuaib669.bunkrecord.SUBLIST"));
//Sublist being the activity that displays the stored contents of the file and lets user manipulate the file classes.bin.
}
}

我的主要难题是能够访问同一个文件(无论是 subject.txt 还是 classes.bin)以及能够读取和操作同一应用程序中任何其他 Activity 的数据。

最佳答案

我不确定这里的困境是什么 - 如果您使用相同的文件名,并且可能使用相同的路径名,那么根据定义 - 这是相同的文件。

只要您的所有 Activity 都在同一个应用程序/程序包中,那么我认为您不会有任何问题。

因此 - 为两个文件中的每一个使用相同的完整路径名,您不必担心它们是否是同一个文件。

我建议的是,不要使用 openFileOutput("subject.txt", Context.MODE_WORLD_READABLE)(这是相对的,您可能不知道文件在哪里),您可能想要使用 openFileOutput(getFilesDir ( ) + "/"+ "subject.txt", Context.MODE_WORLD_READABLE) 这将始终为您提供内部存储上应用程序私有(private)数据中的完整路径名。

我通常在我的应用程序中提供一个辅助方法:

private String getFileName ( String file ) {
return getFilesDir ( ) + "/" + file;
}

关于android - 从多个 Activity 访问文件。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7076663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com