我正在开发一个简单的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) 我已经建立了一个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) 我想学习一种方法来获得两个字符串不同的部分。
假设我有这两个字符串:
String s1 = "x4.printString(\"Bianca.()\").y1();";
String s2 = "sb.printString(\"Bianca.()\").length();";
Run Code Online (Sandbox Code Playgroud)
我想要这个输出:["x4", "y1", "sb", "length"]来自一个方法接收s1和s2作为参数。
我在其他帖子中寻找过类似的东西,但我只找到了指向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)