gpt4 book ai didi

java - 从文本文件读取并存储特定值

转载 作者:太空宇宙 更新时间:2023-11-04 10:36:23 73 4
gpt4 key购买 nike

基本上,我下面的代码当前确实从文本文件中读取,但我希望它做的是存储一个值,以便稍后我可以将其用于另一个函数。因此,我想从文本文件中存储高度(175)和体重(80)值。那要怎么做呢?

文本文件:

Name: ..........
Height: 175
Weight 80

主要 Activity :

package com.example.readfromfiletest;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.io.IOException;
import java.io.InputStream;

public class MainActivity extends AppCompatActivity {

Button b_read;
TextView tv_text;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

b_read = (Button) findViewById(R.id.b_read);
tv_text = (TextView) findViewById(R.id.tv_text);

b_read.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String text = "";
try {
InputStream is = getAssets().open("test.txt");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
text = new String(buffer);

} catch (IOException ex) {
ex.printStackTrace();
}
tv_text.setText(text);
}
});
}
}

最佳答案

从您的评论来看,听起来您是在问如何正确地将值读入不同的变量,而不是将它们读入一个String。我认为要实现此目标,您应该做的第一件事是使用 BufferedReader 逐行读取文件。然后,对于您读入的每一行,您可以确定将值分配给哪个变量。例如,您可以这样做:

Button b_read;
TextView tv_text;
String name = "";
int height = 0;
int weight = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

b_read = (Button) findViewById(R.id.b_read);
tv_text = (TextView) findViewById(R.id.tv_text);

b_read.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String text = "";
try {
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(getAssets().open("test.txt")));
String line;
while((line = bufferedReader.readLine()) != null){
text = text.concat(line + "\n");
String[] lineVals = line.split(":");
if(lineVals[0].equalsIgnoreCase("name")){
name = lineVals[1].trim();
} else if(lineVals[0].equalsIgnoreCase("height")){
height = Integer.parseInt(lineVals[1].trim());
} else if(lineVals[0].equalsIgnoreCase("weight")){
weight = Integer.parseInt(lineVals[1].trim());
}
}
} catch (IOException ex) {
ex.printStackTrace();
}
tv_text.setText(text);
}
});
}

BufferedReader 一次读取一行。例如,“高度:175”

然后该行在“:”上分割,返回一个带有两个值的String[]。继续我们的高度示例,数组看起来像这样:[“Height”,“175”]

if 语句(也可以是 case 语句)然后确定我们是否正在处理名称、高度或体重变量。

然后将该值分配给适当的变量。在此赋值期间调用 trim() 方法来删​​除冒号后面的空格。您还可以通过对“:”执行 split() 方法来规避此问题。

您也可以坚持使用当前的方法,并执行一些涉及拆分、正则表达式或其他方法的String操作,但我认为我提出的解决方案将来会更容易阅读/使用。

关于java - 从文本文件读取并存储特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49412038/

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