我是Android Studio编程的新手。我正在尝试创建一个简单的应用程序以获得基本经验。在应用程序中,我需要将单个输入存储到内部存储器中的文件(最好是CSV)。首先,我试图保存用户数据-我的姓名和电话号码。保存方法如下:
public void save(View view)
{
String fileName = "user.csv";
ContextWrapper contextWrapper = new ContextWrapper(getApplicationContext());
File directory = contextWrapper.getDir(getFilesDir().getName(), ContextWrapper.MODE_PRIVATE);
File file = new File(directory, fileName);
String data = "FirstName,LastName,PhoneNumber";
FileOutputStream outputStream;
try {
outputStream = openFileOutput(fileName, Context.MODE_PRIVATE);
outputStream.write(data.getBytes());
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
}
数据似乎已保存,我已重定向到MainActivity
。方法如下:
protected void onCreate(Bundle savedInstanceState) {
File file = new File(getFilesDir(),"user.csv");
if(!file.exists()) {
Intent intent = new Intent(this, activity_login.class);
startActivity(intent);
}
else {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv_name = findViewById(R.id.tv_name);
TextView tv_phone = findViewById(R.id.tv_phone);
BufferedReader br = null;
try {
String sCurrentLine;
br = new BufferedReader(new FileReader("user.csv"));
while ((sCurrentLine = br.readLine()) != null) {
tv_name.setText(sCurrentLine);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
TextView
tv_name
中没有存储值,该框为空。我在哪里犯错?
非常感谢您的帮助!
答案 0 :(得分:0)
以此来读取文件:
FileInputStream fis = new FileInputStream("your full file path");
BufferedReader bfr = new BufferedReader(new InputStreamReader(fis));
答案 1 :(得分:0)
下面是用于创建.csv文件并将数据插入其中的代码。
有关我的答案的更多信息:https://stackoverflow.com/a/48643905/8448886
此处编码:
var a1 = true && 'Cat' // no false values so returns true
var a2 = 'cat' && false // one false is there so returns false
var a3 = 'cat' && undefined // returns false
var a4 = 'cat' && null // returns false
var a5 = 'cat' && 1 // returns true
var a6 = 'false' && 'false' // returns true
and so on....
答案 2 :(得分:0)
要读取保存的数据,请使用此方法UTF_8编码
public static String readAsString(InputStream is) throws IOException {
BufferedReader reader = null;
StringBuilder sb = new StringBuilder();
try {
String line;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
reader = new BufferedReader(new InputStreamReader(is,UTF_8));
}
while ((line = reader.readLine()) != null) {
sb.append(line);
}
} finally {
if (reader != null) {
reader.close();
}
}
return sb.toString();
}
按以下方法使用此方法,分析文件“ user.csv”。
public static String readFileAsString(File file) throws IOException {
return readAsString(new FileInputStream(file));
}
获取字符串并设置textView