我构建了一个方法,递归地将文件夹的内容添加到文件扩展名为"epub"的zip文档中,这基本上是一个epub,除了一件事:
存档中的第一个文档必须命名为"mimetype",类型必须指定application/epub + zip,并且必须以38的字节偏移量开头.有没有办法将mimetype添加到带有偏移量38的存档?
我建立的方法几乎可行.它构建了一个可以被大多数电子阅读器读取的epub,但它没有验证.EpubCheck给出了这个错误:
mimetype contains wrong type (application/epub+zip expected)
Run Code Online (Sandbox Code Playgroud)
这是原始测试epub中不存在的问题,但显示在重建的epub中.我仔细检查了解压缩/重新压缩的mimetype文件的内容是否正确.
这个方法太多了,不能在这里发布.但这就是我用来将mimetype文件添加到存档的方法:
out = new ZipOutputStream(new FileOutputStream(outFilename));
FileInputStream in = new FileInputStream(mimeTypePath);
out.putNextEntry(new ZipEntry("mimetype"));
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
out.closeEntry();
in.close();
out.close();
Run Code Online (Sandbox Code Playgroud) 在学习C时,我刚开始研究结构指针并提出一些问题.
假设我要创建一个名为结构myStructure,然后创建一个指针myStructurePointer,指向myStructure.是*myStructurePointer,有myStructure两种引用相同的方法吗?如果是这样,为什么有必要使用 - >运算符?这似乎更容易使用*myStructurePointer.variable_name比myStructurePointer->variable_name.
对于CS类,我正在编写由我的教授创建的链接列表界面的链表实现.该作业要求我们使用泛型作为列表.我认为,我所创造的是非常标准的.
public class MyLinkedList<T> implements ADTListInterface {
...
private class Node<T> {
Node<T> head;
Node<T> prev;
public Node(int max) {
...
}
public void shift() {
...
Node<T> newNode = new Node<T>(this.max);
newNode.prev = head.prev;
...
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
在编译时生成以下错误:
MyLinkedList.java:111: incompatible types
found : MyLinkedList<T>.Node<T>
required: MyLinkedList<T>.Node<T>
newNode.prev = head.prev;
Run Code Online (Sandbox Code Playgroud)
这个错误让我非常困惑.任何人都可以向我解释问题是什么?
我正在尝试创建的Activity类型的一个很好的例子是gmail应用程序设置Activity.它会垂直列出所有可自定义的设置,每个设置之间都有水平规则.通常看起来相同的领域有很多种.例如:文本字段通常显示带有下面描述的粗体标题和右边带圆圈的三角形.
根视图是什么类型的视图组?每个字段都有哪种视图或视图组?
我对MySQL的经验非常基础.简单的东西很容易,但我遇到了需要更多知识的东西.我需要一个存储一小部分单词的表.存储的单词数量可以是1到15之间的任何值.后来,我打算用这些单词在表格中搜索.我考虑过几种不同的方法:
A.)我可以用15个字段创建数据库,只要数据小于15就填充空值.我真的不喜欢这个.这看起来效率很低.
B.)另一种选择是仅使用单个字段,并将数据存储为逗号分隔列表.每当我回到搜索时,我都会在场上运行正则表达式.再次,这似乎非常低效.
我希望这两个选项有一个很好的替代方案.任何建议将非常感激.
-谢谢
对于CS类,我需要使用三种数据结构来解决分配的问题:Queue,PriorityQueue和Stack.我想使用抽象数据结构编写单一的问题解决方案.我将使用每个所需数据类型的包装类来实现ADT.这是我到目前为止:
一个名为Method的接口:
public interface Method<E> {
public abstract void add(E data);
public abstract E remove();
public abstract E peek();
public abstract Iterator<E> Iterator();
}
Run Code Online (Sandbox Code Playgroud)
以及实现该接口的三个包装类.我称他们为QueueMethod,StackMethod和PriorityQueueMethod.我在实现界面时遇到了一些麻烦.这是实现的开始,它给出了错误"Class不是抽象的,并且不会覆盖抽象方法add(java.lang.Object)".据我所知,两种添加方法的签名是相同的.
这是QueueMethod包装类的开头:
public class PriorityQueueMethod<T> implements Method {
PriorityQueue<T> queue;
public PriorityQueueMethod() {
queue = new PriorityQueue<T>();
}
public void add(T data) {
queue.offer(data);
}
}
Run Code Online (Sandbox Code Playgroud) 有一个更好的方法吗?
/* Compares two characters.
If ch1 is alphabetically smaller than ch2, return true
If ch1 is equal to ch2 or is alphabetically greater, return false
*/
public static boolean smallestCharacter(char ch1, char ch2) {
return Character.parseChar((new String(ch1)).toLowerCase()) <
Character.parseChar((new String(ch2)).toLowerCase())
}
Run Code Online (Sandbox Code Playgroud)
更新:可以假设ch1和ch2都是英文字母中的字符.如果您有类似的问题,但不能假设ch2和ch2是英文字符,我建议阅读@Tedd Hopp的答案.
我有一个这种形式的文件名数组:
"A - 1.2 - 平面图.PDF"
我需要首先按照开头的类别对数组进行排序,顺序如下:
1. Category: A
2. Category: ESC
3. Category: C
4. Category: M
5. Category: E
6. Category: P
Run Code Online (Sandbox Code Playgroud)
然后我需要按类别后面的数字对数组进行排序.
这是要排序的数组的示例:
$arr[0] = "A - 1.0 - Title Page.PDF";
$arr[1] = "A - 2.2 - Enlarged Floor Plans";
$arr[2] = "A - 2.1.0 - Structural Details.PDF";
$arr[3] = "E - 1.0 - Electrical Title Page.PDF";
$arr[4] = "A - 1.2 - Floor Plan.PDF";
$arr[5] = "P - 1.0 - Plumbing Title Page.PDF";
$arr[6] = …Run Code Online (Sandbox Code Playgroud)