java - FileUtils:未找到 readLines 和 writeLines 方法
问题描述
我是 Android Studio 的新手,所以我按照视频的说明进行操作,并且不断出现错误,即 ReadLines 和 writeLines 方法不存在。我尝试导入方法,但没有一个起作用。
我假设这个实现是那些方法的负责人,它根据说明位于正确的位置(应用程序文件),但它周围没有错误消息。
视频:https ://www.youtube.com/watch?v=qP4U_4QvojQ&list=PLrT2tZ9JRrf6cHOlMkbmTMFt0RzpJiRGX&index=4
implementation 'commons-io:commons-io:2.6'
这是使用这些方法的 MainActivity.java 代码
package com.example.simpletodo;
import android.os.Bundle;
import android.os.FileUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
ArrayList items;
Button btnAdd;
EditText etItem;
RecyclerView rvItems;
ItemsAdapter itemsAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnAdd = findViewById(R.id.btnAdd);
etItem = findViewById(R.id.etItem);
rvItems = findViewById(R.id.rvItems);
loadItems();
ItemsAdapter.OnLongClickListener onLongClickListener = new ItemsAdapter.OnLongClickListener(){
@Override
public void onItemLongClicked(int position){
//Delete the item from the model
items.remove(position);
//Notify the adapter
itemsAdapter.notifyItemRemoved(position);
Toast.makeText(getApplicationContext(), "Item is removed", Toast.LENGTH_SHORT).show();
saveItems();
}
};
itemsAdapter = new ItemsAdapter(items);
rvItems.setAdapter(itemsAdapter);
rvItems.setLayoutManager(new LinearLayoutManager(this));
btnAdd.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
String todoItem = etItem.getText().toString();
//Add item to the model
items.add(todoItem);
//Notify adapter that an item is inserted
itemsAdapter.notifyItemInserted(items.size() - 1);
etItem.setText("");
Toast.makeText(getApplicationContext(), "Item was added", Toast.LENGTH_SHORT).show();
saveItems();
}
});
}
private File getDatafile(){
return new File(getFilesDir(), "data.txt");
}
//This function will load items by reading every line of the data file
private void loadItems(){
try {
items = new ArrayList<>(FileUtils.readLines(getDatafile(), Charset.defaultCharset()));
}
catch (IOException e) {
Log.e("MainActivity", "Error reading items", e);
items = new ArrayList<>();
}
}
//This function saves items by writing them into the data file
private void saveItems(){
try {
FileUtils.writeLines(getDatafile(), items);
}
catch (IOException e){
Log.e("MainActivitiy", "Error writing items", e);
}
}
}
解决方案
尝试:
import org.apache.commons.io.FileUtils;
而不是
import android.os.FileUtils;
根据文档,android.os.FileUtils没有readLines()
orwriteLines()
方法。
推荐阅读
- jboss - 在 JBoss Fuse 6.1.0 中配置故障转移 SMTP 服务器
- linux - 在执行 for 循环时跳过没有内容的文件名
- reactjs - 如何根据纯字符串值设置 slate 值(序列化)
- android - Android In-App billing 中“测试卡慢”的情况下未调用 onPurchasesUpdated 回调
- python - 我怎样才能使这种构造更简单,例如使用 python 中的类或函数?
- unit-testing - ASP.NET Core 3.1 升级问题
- ios - UICollectionViewFlowLayout 问题
- sql - 按顺序删除重复行
- c# - 可以使用从 Swift Binding 项目生成的 *.dll 吗?
- r - 为什么在 hexbin 对象上调用 graphics::plot 会引发错误?