小编del*_*a85的帖子

Android:如何将文件写入内部存储

我正在开发一个简单的android应用程序,我需要在内部存储设备中编写一个文本文件.我知道关于这个问题有很多问题(和答案),但我真的无法理解我在做错的方式.

这是我在活动中使用的一段代码,用于编写文件:

public void writeAFile(){
    String fileName = "myFile.txt";
    String textToWrite = "This is some text!";
    FileOutputStream outputStream;

   try {
      outputStream = openFileOutput(fileName , Context.MODE_PRIVATE);
      outputStream.write(textToWrite.getBytes());
      outputStream.close();
   } catch (Exception e) {
     e.printStackTrace();
   }
}
Run Code Online (Sandbox Code Playgroud)

我真的不明白我在做什么错.另外,我已经在Android Studio和我的手机上的模拟器上尝试了这个项目,以便了解我做错了什么,但即使使用该项目,也没有文件既没有写在手机上也没有写在模拟器上.

编辑:我知道没有文件写入我的内部存储,因为我尝试读取文件的内容,在我写完之后,使用以下代码:

public void ReadBtn(View v) {
    //reading text from file
    try {
        FileInputStream fileIn=openFileInput("myFile.txt");
        InputStreamReader InputRead= new InputStreamReader(fileIn);

        char[] inputBuffer= new char[READ_BLOCK_SIZE];
        String s="";
        int charRead;

        while ((charRead=InputRead.read(inputBuffer))>0) {
            String readstring=String.copyValueOf(inputBuffer,0,charRead);
            s +=readstring;
        }
        InputRead.close();
        textmsg.setText(s);
    } catch (Exception e) { …
Run Code Online (Sandbox Code Playgroud)

java android internal-storage

13
推荐指数
2
解决办法
5万
查看次数

如何在内部使用异步函数和setState测试useEffect

我已经建立了一个github项目,以了解如何更好地测试react(v 16.8.0)useEffect挂钩。我进行了一个api调用以在useEffect中获取数据,并将接收到的数据设置为状态组件元素。我的组件将查询作为道具接收,如果查询道具字符串不为空,则进行api调用。我想测试使用无空查询prop进行api调用,并且组件将其状态设置为正确。

我知道测试useEffect面临的问题是,与useEffect相关的效果不会阻止浏览器更新屏幕,因此在useEffect发挥作用之前,测试将结束。我从React文档中了解到,有来自react-test-utils的名为act的API,该API 被认为可以包装渲染组件的代码并对其执行更新。即使我尝试使用它,我的代码仍然会遇到相同的问题。

这是我要测试的组件:

const DisplayData = ({ query, onQueryChange }) => {
    const [data, setData] = useState({ hits: [] });

    useEffect(() => {
        const fetchData = async () => {
            const result = await axios.get(
                `http://hn.algolia.com/api/v1/search?query=${query}`,
            );
            setData(result.data);
        };
        if (!!query) fetchData();
    }, [query]);

    return (
        <ul>
            {data.hits.map(item => (
                <li key={item.objectID}>
                    <a href={item.url}>{item.title}</a>
                </li>
            ))}
        </ul>
    );
};
Run Code Online (Sandbox Code Playgroud)

这是我为此编写的测试:

it("should show new entries …
Run Code Online (Sandbox Code Playgroud)

reactjs jestjs react-testing-library react-hooks

9
推荐指数
1
解决办法
2101
查看次数

Java:如何比较两个字符串以获得它们不同的部分?

我想学习一种方法来获得两个字符串不同的部分。

假设我有这两个字符串:

String s1 = "x4.printString(\"Bianca.()\").y1();";
String s2 = "sb.printString(\"Bianca.()\").length();";
Run Code Online (Sandbox Code Playgroud)

我想要这个输出:["x4", "y1", "sb", "length"]来自一个方法接收s1s2作为参数。

我在其他帖子中寻找过类似的东西,但我只找到了指向StringUtils.difference(String first, String second) 的链接

但是这个方法从索引中返回第二个字符串,它开始与第一个不同。
我真的不知道从哪里开始,任何建议将不胜感激。

更新 按照@aUserHimself 的建议,我设法获得了两个字符串中的所有公共子序列,但是这些子序列像一个唯一的字符串一样出现。

这是我现在的代码:

private static int[][] lcs(String s, String t) {
    int m, n;
    m = s.length();
    n = t.length();
    int[][] table = new int[m+1][n+1];
    for (int i=0; i < m+1; i++)
        for (int j=0; j<n+1; j++)
            table[i][j] = 0;
    for (int i = 1; i < m+1; i++)
        for …
Run Code Online (Sandbox Code Playgroud)

java string string-comparison

5
推荐指数
1
解决办法
542
查看次数