Java如何实现读一个文件(非文本文件)后输出其中自己指定的一部分?
RT,题目是模拟HTTP上载:根据给定HTTP上载文件协议规范以及根据该规范生成的文件,解析出上载的文件内容并输出。通过WEB上传文件时,HTML设置了File类型的文件...
RT,题目是模拟HTTP上载:
根据给定 HTTP 上载文件协议规范以及根据该规范生成的文件,解析出上载的文件内容并输出。
通过 WEB 上传文件时, HTML 设置了 File 类型的文件表单,其表单格式为:
<form action="JSP 页面或 Servlet" method="post|get" ENCTYPE="mutipart/form-data" >
<input type="file" name=" 表单元素名称 ">
</form>
服务器可将接收到的上传文件信息及其内容写入一个临时文件。按照 HTTP 协议的规定,临时文件的前四行和最后的五行是表单域的信息,其中第二行有上传文件的文件名信息,第四行结束位置到倒数第六行结束位置之间的内容是文件本身部分。
实现输出文件本身,这道题大致什么思路?用到哪些类和函数?
谢谢!~
样例给的是:
------------naec77rBnUNR3mHEcQV8so↵
Content-Disposition: form-data; name="test"; filename="Mod01.pdf"↵
Content-Type: application/pdf↵
↵
<一个图片>
------------NBHLwhyYXJkqDcJwOLUYGq
Content-Disposition: form-data; name="submit"
上传
------------NBHLwhyYXJkqDcJwOLUYGq-- 展开
根据给定 HTTP 上载文件协议规范以及根据该规范生成的文件,解析出上载的文件内容并输出。
通过 WEB 上传文件时, HTML 设置了 File 类型的文件表单,其表单格式为:
<form action="JSP 页面或 Servlet" method="post|get" ENCTYPE="mutipart/form-data" >
<input type="file" name=" 表单元素名称 ">
</form>
服务器可将接收到的上传文件信息及其内容写入一个临时文件。按照 HTTP 协议的规定,临时文件的前四行和最后的五行是表单域的信息,其中第二行有上传文件的文件名信息,第四行结束位置到倒数第六行结束位置之间的内容是文件本身部分。
实现输出文件本身,这道题大致什么思路?用到哪些类和函数?
谢谢!~
样例给的是:
------------naec77rBnUNR3mHEcQV8so↵
Content-Disposition: form-data; name="test"; filename="Mod01.pdf"↵
Content-Type: application/pdf↵
↵
<一个图片>
------------NBHLwhyYXJkqDcJwOLUYGq
Content-Disposition: form-data; name="submit"
上传
------------NBHLwhyYXJkqDcJwOLUYGq-- 展开
展开全部
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.util.Scanner;
/**
* 读取文件指定行数内容
* @author young
*
*/
public class ReadSelectedLine {
static void readLineVarFile(String fileName, int lineNumber)
throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(
new FileInputStream(fileName)));
String line = reader.readLine().toString();
if (lineNumber < 0 || lineNumber > getTotalLines(fileName)) {
System.out.println("不在文件的行数范围之内。");
}
int num = 0;
while (line != null) {
if (lineNumber == ++num) {
System.out.println("line " + lineNumber + ": " + line);
}
line = reader.readLine();
}
reader.close();
}
// 文件内容的总行数。
static int getTotalLines(String fileName) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(
new FileInputStream(fileName)));
LineNumberReader reader = new LineNumberReader(in);
String s = reader.readLine();
int lines = 0;
while (s != null) {
lines++;
s = reader.readLine();
}
reader.close();
in.close();
return lines;
}
public static void main(String[] args) throws IOException {
// 读取文件
String fileName = "c:\\1.java";
// 获取文件的内容的总行数
int totalNo = getTotalLines(fileName);
System.out.println("There are " + totalNo + " lines in the text!");
// 指定读取的行号,此处也可以改成自由输入
System.out.println("输出文件第几行内容?");
int lineNumber = new Scanner(System.in).nextInt();
// 读取指定行的内容
readLineVarFile(fileName, lineNumber);
}
}
在C盘新建1.java文件,输入任意内容,
运行代码后显示结果如下:
展开全部
服务器端应该按照指定格式读取数据,不过既然已经写入了临时文件,那就简单了,直接先按行读取格式头,然后按字节读取文件内容,写入本地文件。
追问
嗯 我就是这样写的…
不过过不了,用断点没看出啥问题。。但写完的图片打不开
像样例里第四行的空行那些不用写进去吧?
追答
空行不用
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这需要看你想要输出那一部分,而且非文本文件的话文件是有自己的文件结构的,只输出其中一部分估计也用不了.
真想操作的话,直接二进制读取,然后判断然后二进制写出就行了.
真想操作的话,直接二进制读取,然后判断然后二进制写出就行了.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
额??网络爬虫/?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询