【问题标题】:FileUtils: readLines and writeLines methods not foundFileUtils:未找到 readLines 和 writeLines 方法
【发布时间】:2020-02-03 05:40:46
【问题描述】:

我是 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);
        }
    }

}

【问题讨论】:

  • 这是最年轻的尝试从视频而不是文档中学习编程的人。

标签: java android android-studio import


【解决方案1】:

试试:

import org.apache.commons.io.FileUtils;

而不是

import android.os.FileUtils;

根据文档,android.os.FileUtils 没有readLines()writeLines() 方法。

【讨论】:

  • 它说它已经在单行导入中定义了,尽管感谢您的响应
  • @yumij 不在您发布的代码中。你导入了一个不同的类。
  • @yumij 我们不需要视频。您在此处发布的代码和此答案不一样,并且没有多少不相关的链接可以改变这一点。如果视频有问题,那就更能证明您在本应查看文档时浪费了时间。你不能把你的编程生涯花在查看第三方和三流资源,然后在这里问为什么它们不起作用。使用文档。这就是它的用途。
猜你喜欢
  • 1970-01-01
  • 2021-11-16
  • 2019-01-20
  • 1970-01-01
  • 2023-03-03
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
  • 2021-05-01
相关资源
最近更新 更多