所以我创建了这个方法,最后显示整行,因为我在转换和编辑后显示数组。所以我的问题是我怎么知道将数组覆盖到我抓住它的同一行。提前谢谢,这是我的代码。
private void TextBox_KeyDown(object sender, KeyRoutedEventArgs e)
{
if (e.Key == VirtualKey.Enter)
{
additem_button.Command.Execute("");
e.Handled = true;
}
}
// button.Command.Execute("your parameter"); because on my button, the
// command has been binded to a Delegate Command inside the VM :D
我正在使用字符串accountNumber来获取我需要的特定行。获取行后我将其更改为数组,同时使用str.split(“”)拆分索引; 。之后,我知道我需要编辑索引号[3]。所以我这样做然后我把它放回阵列。我需要做的最后一件事就是现在让阵列回来。
答案 0 :(得分:1)
您可以跟踪正在阅读的文件的输入,并使用修改后的版本将其写回。
public void getData(String path, String accountNumber) {
try {
FileInputStream fis = new FileInputStream(path);
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
System.out.println("Please Enter the Deposit amount That you would like to add.");
Scanner sn = new Scanner (System.in);
int add = sn.nextInt();
String line; // current line
String input = ""; // overall input
while ((line = br.readLine()) != null) {
if (line.contains(accountNumber)) {
String[] array = line.split(" ");
int old = Integer.parseInt(array[3]);
int Sum= old + add;
String Sumf = Integer.toString(Sum);
array[3] = Sumf;
// rebuild the 'line' string with the modified value
line = "";
for (int i = 0; i < array.length; i++)
line+=array[i]+" ";
line = line.substring(0,line.length()-1); // remove the final space
}
// add the 'line' string to the overall input
input+=line+"\n";
}
// write the 'input' String with the replaced line OVER the same file
FileOutputStream fileOut = new FileOutputStream(path);
fileOut.write(input.getBytes());
fileOut.close();
} catch (Exception ex) {
System.out.println(ex);
}
}
答案 1 :(得分:0)
这就是我理解你有一个文件的问题,你将逐行阅读它并进行一些更改,并希望在同一位置再次写入。创建一个新的临时文件并将内容写入临时文件,如果更改,则写入更改后的结果(如果不按原样写入)。 最后将temp重命名为原始文件名