java

阅读 / 问答 / 标签

java读取doc,pdf问题。

环境准备txt利用common-iopdf利用pdfbox剩下的用POI关于POI,读取xls没啥特别的,主要是读取doc和ppt,需要下载poi源代码,然后将poi-src-3.7-20101029.zippoi-3.7srcscratchpadsrc下的所有文件copy到工程,或者自己封装个jar包jar包依赖code如下:package test;import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.text.NumberFormat;import org.apache.commons.io.FileUtils;import org.apache.pdfbox.pdfparser.PDFParser;import org.apache.pdfbox.pdmodel.PDDocument;import org.apache.pdfbox.util.PDFTextStripper;import org.apache.poi.POIXMLDocument;import org.apache.poi.POIXMLTextExtractor;import org.apache.poi.hslf.HSLFSlideShow;import org.apache.poi.hslf.model.Slide;import org.apache.poi.hslf.model.TextRun;import org.apache.poi.hslf.usermodel.RichTextRun;import org.apache.poi.hslf.usermodel.SlideShow;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.hwpf.extractor.WordExtractor;import org.apache.poi.openxml4j.exceptions.OpenXML4JException;import org.apache.poi.openxml4j.opc.OPCPackage;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.xslf.extractor.XSLFPowerPointExtractor;import org.apache.poi.xssf.usermodel.XSSFCell;import org.apache.poi.xssf.usermodel.XSSFRow;import org.apache.poi.xssf.usermodel.XSSFSheet;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import org.apache.poi.xwpf.extractor.XWPFWordExtractor;import org.apache.xmlbeans.XmlException;public class ReadFileUtils {/** * @param args * @throws Exception */public static void main(String[] args) throws Exception {ReadFileUtils rf = new ReadFileUtils();String s = "";// s = rf.readTXT("E:/itsm文档的后缀名分析报告2.txt");// s = rf.readPDF("E:/memcached全面剖析.pdf");// s = rf.readEXCEL("E:/副本工作量及成本模板.xls");// s = rf.readEXCEL2007("E:/功能点估算方案.xlsx");// s = rf.readWORD("E:/pms中文.doc");// s = rf.readWORD2007("E:/功能点估算方法.docx");//s = rf.readPPT("E:/精细化管理信息系统项目汇报v1.0.ppt");s = rf.readPPT2007("e:/精细化管理信息系统项目汇报v1.0.pptx");System.out.println(s);}// 读取pptpublic String readPPT(String file) throws IOException {StringBuilder sb = new StringBuilder();SlideShow ppt = new SlideShow(new HSLFSlideShow(file));Slide[] slides = ppt.getSlides();//提取文本信息 for (Slide each : slides) { TextRun[] textRuns = each.getTextRuns(); for (int i=0 ;i< textRuns.length; i++ ) { RichTextRun[] richTextRuns = textRuns.getRichTextRuns(); for (int j = 0; j < richTextRuns.length; j++) { sb.append(richTextRuns[j].getText()); } sb.append(" "); } sb.append(" ");}return sb.toString();}// 读取pptxpublic String readPPT2007(String file) throws IOException, XmlException, OpenXML4JException { return new XSLFPowerPointExtractor(POIXMLDocument.openPackage(file)).getText(); }// 读取xls文件public String readEXCEL(String file) throws IOException {StringBuilder content = new StringBuilder();HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(file));// 创建对Excel工作簿文件的引用for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {if (null != workbook.getSheetAt(numSheets)) {HSSFSheet aSheet = workbook.getSheetAt(numSheets);// 获得一个sheetfor (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) {if (null != aSheet.getRow(rowNumOfSheet)) {HSSFRow aRow = aSheet.getRow(rowNumOfSheet); // 获得一个行for (short cellNumOfRow = 0; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++) {if (null != aRow.getCell(cellNumOfRow)) {HSSFCell aCell = aRow.getCell(cellNumOfRow);// 获得列值if (this.convertCell(aCell).length() > 0) {content.append(this.convertCell(aCell));}}content.append(" ");}}}}}return content.toString();}// 读取xlsx文件public String readEXCEL2007(String file) throws IOException {StringBuilder content = new StringBuilder();XSSFWorkbook workbook = new XSSFWorkbook(file);for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {if (null != workbook.getSheetAt(numSheets)) {XSSFSheet aSheet = workbook.getSheetAt(numSheets);// 获得一个sheetfor (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) {if (null != aSheet.getRow(rowNumOfSheet)) {XSSFRow aRow = aSheet.getRow(rowNumOfSheet); // 获得一个行for (short cellNumOfRow = 0; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++) {if (null != aRow.getCell(cellNumOfRow)) {XSSFCell aCell = aRow.getCell(cellNumOfRow);// 获得列值if (this.convertCell(aCell).length() > 0) {content.append(this.convertCell(aCell));}}content.append(" ");}}}}}return content.toString();}private String convertCell(Cell cell) {NumberFormat formater = NumberFormat.getInstance();formater.setGroupingUsed(false);String cellValue = "";if (cell == null) {return cellValue;}switch (cell.getCellType()) {case HSSFCell.CELL_TYPE_NUMERIC:cellValue = formater.format(cell.getNumericCellValue());break;case HSSFCell.CELL_TYPE_STRING:cellValue = cell.getStringCellValue();break;case HSSFCell.CELL_TYPE_BLANK:cellValue = cell.getStringCellValue();break;case HSSFCell.CELL_TYPE_BOOLEAN:cellValue = Boolean.valueOf(cell.getBooleanCellValue()).toString();break;case HSSFCell.CELL_TYPE_ERROR:cellValue = String.valueOf(cell.getErrorCellValue());break;default:cellValue = "";}return cellValue.trim();}// 读取pdf文件public String readPDF(String file) throws IOException {String result = null;FileInputStream is = null;PDDocument document = null;try {is = new FileInputStream(file);PDFParser parser = new PDFParser(is);parser.parse();document = parser.getPDDocument();PDFTextStripper stripper = new PDFTextStripper();result = stripper.getText(document);} finally {if (is != null) {is.close();}if (document != null) {document.close();}}return result;}// 读取doc文件public String readWORD(String file) throws Exception {String returnStr = "";try {WordExtractor wordExtractor = new WordExtractor(new FileInputStream(new File(file)));returnStr = wordExtractor.getText();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return returnStr;}// 读取docx文件public String readWORD2007(String file) throws Exception { return new XWPFWordExtractor(POIXMLDocument.openPackage(file)).getText(); }// 读取txt文件public String readTXT(String file) throws IOException {String encoding = ReadFileUtils.get_charset(new File(file));if (encoding.equalsIgnoreCase("GBK")) {return FileUtils.readFileToString(new File(file), "gbk");} else {return FileUtils.readFileToString(new File(file), "utf8");}}private static String get_charset(File file) throws IOException {String charset = "GBK";byte[] first3Bytes = new byte[3];BufferedInputStream bis = null;try {boolean checked = false;bis = new BufferedInputStream(new FileInputStream(file));bis.mark(0);int read = bis.read(first3Bytes, 0, 3);if (read == -1)return charset;if (first3Bytes[0] == (byte) 0xFF && first3Bytes[1] == (byte) 0xFE) {charset = "UTF-16LE";checked = true;} else if (first3Bytes[0] == (byte) 0xFE&& first3Bytes[1] == (byte) 0xFF) {charset = "UTF-16BE";checked = true;} else if (first3Bytes[0] == (byte) 0xEF&& first3Bytes[1] == (byte) 0xBB&& first3Bytes[2] == (byte) 0xBF) {charset = "UTF-8";checked = true;}bis.reset();if (!checked) {// int len = 0;int loc = 0;while ((read = bis.read()) != -1) {loc++;if (read >= 0xF0)break;if (0x80 <= read && read <= 0xBF) // 单独出现BF以下的,也算是GBKbreak;if (0xC0 <= read && read <= 0xDF) {read = bis.read();if (0x80 <= read && read <= 0xBF) // 双字节 (0xC0 - 0xDF)// (0x80// - 0xBF),也可能在GB编码内continue;elsebreak;} else if (0xE0 <= read && read <= 0xEF) {// 也有可能出错,但是几率较小read = bis.read();if (0x80 <= read && read <= 0xBF) {read = bis.read();if (0x80 <= read && read <= 0xBF) {charset = "UTF-8";break;} elsebreak;} elsebreak;}}// System.out.println( loc + " " + Integer.toHexString( read )// );}} catch (Exception e) {e.printStackTrace();} finally {if (bis != null) {bis.close();}}return charset;}}

java操作Office办公软件(office办公软件基本操作)

说一下具体方式,首先java操作office需要有第三方的jar来支持比如poi-32jar、jacobjar、jxljar、poi-contrib-32-FINAL-20081019jar、poi-scratchpad-32-FINAL-20081019jar之类的jar,有了这些第三方包的支持,然后根据自己的需求来对照包里面具体的工具类来实现,自动播放和自动下来观看建议自己写个timer来实现javautilTimer和javautilTimerTask

JAVA中如何将带%号的编码转换为汉字?

是utf码,有类的

你好,我的新浪微博登陆页面,按钮点击一直没反应,做下角一直出现的是javascrip:void(0)这个符号,

我也遇到同样的问题,今晚上弄了一晚。后来发现,原来是我的IE旧了。之前用的是IE7,经过更新现在是IE8。因为在网上看人家说过,新浪微博现在久不久的更新,而且现在网上很多的东西都要求支持更高版本的IE浏览器。你试试更新下载一下IE浏览器。希望你也能解决。

报错JAVA The operator + is undefined for the argument type(s) String, void

paramDomain.setPatient_info_id(rs1.getString("mr_id")) 这个方法是void,没有返回值

java new date(str) 在tostring() 对象会报错?为什么?

明明是Date d = new Date(str);这个报错,new Date();

java时间戳多少位

1414820032229

JavaWeb的实体类定义中一般日期定义成什么格式?

string类型好处理,你的想法是对的,如果获取一个日期类型的数据,后台写起来麻烦的很,直接String类型的传过来,想存String和Date都有办法

java里面的JTabbedPane选项卡里面添加的按钮怎么实现功能啊

JTabbedPane tabPanel = new JTabbedPane(........);tabPane.setIconAt(tabPane.getTabCount()-1, new ImageIcon(""));

java中14位时间戳怎么获取

时间戳现在是13位的从1970年以来的毫秒数,不知道你说的14位的是?

Java程序面向对象编程的基本架构 接口的定义和使用 求完整代码……谢谢

public class Admins implements Userinterface{ private String name; private String password; private static int userNum; public Admins() { userNum ++; } public Admins(String name, String password) { this.name = name; this.password = password; userNum ++; } public void setPassword(String password) { this.password = password; } public String getPassword() { return this.password; } public String toString() { return "Total: " + Admins.userNum + " Name: " + this.name + " Password: " + this.password; } public static void main(String [] args) { Userinterface [] users = new Userinterface[]{new Admins("jeryy", "11111"), new Admins("green", "123123")}; for(Userinterface u: users) { System.out.println(u); } } }interface Userinterface{ public void setPassword(String password); public String getPassword(); public String toString();}public class Bins{ public static void main(String [] args) { int len = 10; int [] dist = new int [len]; for(int i = 0; i < dist.length; i ++) { dist[i] = (int)(Math.random() * 100); } java.util.Arrays.sort(dist); System.out.println("生成数组如下: "); for(int i: dist) { System.out.print(i + " "); } java.util.Scanner san = new java.util.Scanner(System.in); System.out.print("输入要查找的数: "); int key = san.nextInt(); int res = Bins.binSearch(dist, key); //System.out.println(res); String info = (res >=0 ) ? (key + ":" + res) : "查找失败"; System.out.println(info); } public static int binSearch(int [] dist, int key) { java.util.Arrays.sort(dist); return java.util.Arrays.binarySearch(dist, key);} }

使用java连接oracle数据库的详细步骤,以及怎样在oracle数据库里建库建表,和用户名及权限的设置

这个说起来话有点长了。。。

javascript中NaN == NaN的返回值是?

NaN “Not a Number” NaN 值非常特殊,因为它“不是数字”,所以任何数跟它都不相等,甚至 NaN 本身也不等于 NaN 。 isNaN(numValue)其中必选项 numvalue 参数为要检查是否为 NAN 的值。 如果值是 NaN, 那么 isNaN 函数返回 true ,否则返回 false 。

java中NaN是什么意思

表示不是一个数,例如计算0/0或者负数的平方根结果就是NaN。Java所有的浮点数值计算都遵循IEEE 754标准,用于表示溢出和出错情况的三个特殊的浮点数值:正无穷大负无穷大NaN望采纳~

javascript里面NaN到底是什么意思?

你可以用isNaN(i)来判断是不是NaN

没学html能否一开始只学javascript,两者之间有什么关系?

javasctipt 是脚步语言,可以在多中语言中使用。没有学html的话 没有关系的。他们之间的关系无非就是 我写一个javascsript要到html中显示!看效果罢了!javascsript 操作html html显示结果

java中delete from book where 后面加几个条件,条件可能是空的该怎么写代码??

delete from book where 1=1 + and 条件Google “Java 动态查询”

java String类封装的index方法是用的KMP匹配吗?

什么意思啊 indexof() 是吧

java中关于native使用错误的是

无源文件。必须加上文件后缀名.java,否则将提示以下信息:D:Native>javac-h.HelloNative错误:仅当显式请求注释处理时才接受类名称。源代码,native是用做java和其他语言(如C++)进行协作时使用,也就是native后的函数的实现不是用java写的。

在java中native是一个什么修饰啊

见http://baike.baidu.com/view/1272329.htm

native是java关键字吗

不是吧;48个关键字:abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while。2个保留字(现在没用以后可能用到作为关键字):goto、const。3个特殊直接量:true、false、null。如有帮助请采纳(不懂请提问),可以看我主页,欢迎来交流学习;

java中native的用法

其实就是JNI。native是方法修饰符。Native方法是由另外一种语言(如c/c++,FORTRAN,汇编)实现的本地方法。因为在外部实现了方法,所以在java代码中,就不需要声明了,有点类似于借口方法。Native可以和其他一些修饰符连用,但是abstract方法和Interface方法不能用native来修饰。

java中的native关键字有什么作用

配合JNI使用

java中的native关键字有什么作用?

貌似是用来掉c代码的.. 用的很少 ...

Java中,return的具体用法是什么?

你好,看样子你是新学的,对这个体会还不是很深刻,我之前也有这样的疑惑,但是程序写的多了,就越来越清晰了。网上return的用法我也就不给你粘了,相信你自己也可以搜得到。我说下你可能的误区是在循环中,break和return的用法不是很清晰。这么说吧:x0dx0a1、如果一个方法有返回值,那么必须出现return。x0dx0a2、一个方法的返回值为void,也可以出现return,但是后面什么也不可以写,直接写return;x0dx0a3、return语句后面的内容都不在执行,这是与break不同的地方,二者虽然都可以跳出循环,但是break跳出循环,后面的额代码还将继续执行。x0dx0a4、3的一个特殊情况是有finally出现的情况,这个你日后学异常的时候就明白了。x0dx0a上面都是我在编程中的一点心得体会,你不要着急,慢慢来,体会也就深刻了。

Java中,return的具体用法!

在顺序结构中return 后不能再有语句;

Java中,return的具体用法是什么?

你好,看样子你是新学的,对这个体会还不是很深刻,我之前也有这样的疑惑,但是程序写的多了,就越来越清晰了。网上return的用法我也就不给你粘了,相信你自己也可以搜得到。我说下你可能的误区是在循环中,break和return的用法不是很清晰。这么说吧:1、如果一个方法有返回值,那么必须出现return。2、一个方法的返回值为void,也可以出现return,但是后面什么也不可以写,直接写return ;3、return 语句后面的内容都不在执行,这是与break不同的地方,二者虽然都可以跳出循环,但是break跳出循环,后面的额代码还将继续执行。4、3的一个特殊情况是有finally出现的情况,这个你日后学异常的时候就明白了。上面都是我在编程中的一点心得体会,你不要着急,慢慢来,体会也就深刻了。

Java里return用法

你好,看样子你是新学的,对这个体会还不是很深刻,我之前也有这样的疑惑,但是程序写的多了,就越来越清晰了。网上return的用法我也就不给你粘了,相信你自己也可以搜得到。我说下你可能的误区是在循环中,break和return的用法不是很清晰。这么说吧:1、如果一个方法有返回值,那么必须出现return。2、一个方法的返回值为void,也可以出现return,但是后面什么也不可以写,直接写return ;3、return 语句后面的内容都不在执行,这是与break不同的地方,二者虽然都可以跳出循环,但是break跳出循环,后面的额代码还将继续执行。4、3的一个特殊情况是有finally出现的情况,这个你日后学异常的时候就明白了。上面都是我在编程中的一点心得体会,你不要着急,慢慢来,体会也就深刻了。

Java中return的用法

问的太简单,请补充。

java中return的用法

你可以用myEclipse 自己调试一下

java countdownlatch线程安全吗

是线程安全的,这个类设计的目的就是多线程直接的同步合作。试想,如果它不是线程安全的,那岂不是错误的实现~ 无论有几个线程在操作countdownlatch实例,调用countdownlatch.await()的线程A会被阻塞, 除非其他线程BCD...调用countdownlatch.countdown()并且计数器至0.你可以参考这个回答:http://stackoverflow.com/questions/30074795/java-is-countdownlatch-threadsafe

在java中cyclibarriar和countdownlatch有什么区别

cyclibarriar 就是栅栏,顾名思义:就是一个拦截的装置。多个线程start后,在栅栏处阻塞住,一般定义栅栏的时候会定义有多少个线程。比如定义为4个,那么有三个线程到栅栏处,就阻塞住,如果没有第四个,就会一直阻塞,知道启动第四个线程到栅栏处,所有的线程开始全部进行工作。有点像赛马的例子。所有的赛马一个一个到起点,然后到齐了,在开始跑。countdownlatch:初始化定义一个数字(整型),比如定义2,一个线程启动后在await处停止下来阻塞,调用一次countDown,会减一,知道countDown后变为0时的时候,线程才会继续进行工作,否则会一直阻塞。自己写个赛马的程序,其实就什么都懂了。

java技术相比C++有什么优势?

java技术相比C++有什么优势? 其实根本没有比较的价值和意义,原因有以下几点: 计算机语言更多的是特定一个领域,也就是说如果不指定一个具体的领域,实在没法比较孰优孰劣,比如java在web开发方面的确见长,不过C++在一些传统的应用软件甚至系统级软件引用广泛。 各有所侧重,比如Java——奉行一次编译处处运行的哲学,这带来跨平台的有点,不过,也带来虚拟机带来的低性能。这就是C++的长处。不过Java的抽象程度更高,也就表明同等数量的代码,Java的更少。但是C++11以及C++14的引入也为C++注入了新的生命力。 java相比C++优势何在? 安全性 跨平台 对程序员来说会写一个东西会更稳定更健壮吧好学 《万户OA》JAVA技术开发的OA具有什么优势 云海OA办公自动化系统,基于java开发平台,MVP架构,跨操作系统(windows/linux/unix等)跨数据库(mysql/mssqlserver/oracel/db2/sybase等)跨应用服务器(tomcat/oracel weblogic/ibm websphere/jboss/apace geronim等)跨浏览器(ie/firefox/chrome/sogou/safari/opera/360等),配备各版本移动客户端,阿里钉钉、微信企业号接口,大量控件直接免费内置,产品包含200多个标准化的功能组件。 怎样学好Csharp?Csharp与C,C++,JAVA相比有什么优势?有什么缺点? 找个免费视频学习软件看看,再多练练就可以了,Csharp感觉比C,C++容易,JAVA优势是可以跨平台. Fluke和FOTRIC的热像技术相比有什么优势? 后者还是很不错的,是铝合金外壳,技术更好一些。 纯色技术相比量子点技术有什么优势? 纯色技术是一种新的色彩提升技术,相对于之前在色彩领域广泛应用的量子点技术更为先进,画面播放出来的效果更真实,色准更高。了解了一下,这种纯色技术是在广色域背光灯和液晶模组之间添加了一层光纳米材料,这种材料能吸收几乎所有的杂光,从而得到最纯的色彩。 JSP相比于其他技术(ASP和PHP等)有什么优势 JSP,JavaScript嘛,运行在浏览器的语言,使用率比后面两个都高,谈不上优势,取决于你使用的场景 3d打印FDM技术与其他技术相比,有什么优势? 优势:1,整个系统构造原理和操作简单,维护成本低,系统运行安全。可以使用无毒的原材料,设备系统可在办公环境中安装使用。  ,2、工艺干净、简单、易于操作且不产生垃圾。  ,3、独有的水溶性支撑技术,使得去除支撑结构简单易行,可快速构建瓶状或中空零件以及一次成型的装配结构件。  ,4、原材料以材料卷的形式提供,易于搬运和快速更换。  ,5、可选用多种材料,如各种色彩的工程塑料ABS、PC、PPSF以及医用ABS等。 当然其他技术在另外方面也有优势,各有所长吧。极光尔沃3D打印机大多数机型都是采用FDM技术。而这类的3d打印机是市场买的最好的。 C++和其它语言相比有什么优势和劣势? 优势和劣势永远都是相对的,都要看和谁比。 比C开发方便,但是没有c#,VB等方便。 比c#等支持底层较好,但不如C。 总之,学号c++,让你受用一辈子。 质子重离子技术与传统技术相比有什么优势? 质子重离子技术对人体伤害更小,携康长荣有人已经去过了,据了解还是很不错的。

nios Ⅱ建工程java.net.MalformedURLException: unknown protocol: e错误怎么解决?

SP_CONFIGURE "SHOW ADVANCED OPTIONS",1RECONFIGUREEXEC SP_CONFIGURE "Ad Hoc Distributed Queries",1RECONFIGURE插入的代码:INSERT INTO dbo.Resources(ResourcesUrl,ResourcesLink,ResourcesText) SELECT * FROM OPENROWSET("Microsoft.Jet.OLEDB.4.0","Excel 8.0;HDR=YES;Database=F:Book1.xls", [sheet1$])

java为什么“一旦向上转型,就不能调用子类中的新方法”?

当子类重写了父类方法,向上造成后调用的是子类方法;子类没有重写父类方法,向上造型后调用的是父类方法。publicclassTest1{publicstaticvoidmain(String[]args){Ak=newB();k.sayHi();k.hello();}}classA{publicvoidsayHi(){System.out.println("我是父类");}publicvoidhello(){System.out.println("我是父类hello");}}classBextendsA{publicvoidsayHi(){System.out.println("我是子类");}}输出结果:我是子类我是父类hello

java的annotation继承问题

好像方法重写了之后就不会继承了(无论是否设定为可继承)。这里有个实验说的很详细:http://elf8848.iteye.com/blog/1621392

导入一个maven项目,运行出错Caused by: java.lang.IncompatibleClassChangeError: Implementing class

从错误提示中找,你的错误提示是加载hibernate时,创建sessionFactory错误,初始化出错。1、clean工程及容器并重新编译,尝试重启容器2、查看hibernate相关jar是否真的存在冲突

在JAVA中,怎么利用反射获取一个方法

import java.lang.reflect.*;public class TestClass{ public static void main(String[] args) throws Exception{ /*Class c=Class.forName("Student"); Field[] fs=c.getDeclaredFields(); System.out.println("class "+c.getSimpleName()+"{"); for(Field f:fs){ System.out.println(f.getType().getSimpleName()+" "+f.getName()+";"); } Method[] ms=c.getDeclaredMethods(); for(Method m:ms){ System.out.print(m.getReturnType().getSimpleName()+" "); System.out.print(m.getName()+"("); Class[] ps=m.getParameterTypes(); for(Class p:ps){ System.out.print(p.getSimpleName()+","); } System.out.println("){}"); } Constructor[] cons=c.getConstructors(); for(Constructor con:cons){ System.out.println(c.getSimpleName()+"("); Class[] ps=con.getParameterTypes(); for(Class p:ps){ System.out.print(p.getSimpleName()+","); } System.out.println("){}");}*/ Object s=new Student("chun ",18); Class c=s.getClass(); Field[] fs=c.getDeclaredFields(); for(Field f:fs){ f.setAccessible(true); System.out.println(f.getName()+"="+f.get(s)); // f.set(s,"123"); // System.out.println(f.getName()+"="+f.get(s)); } Class[] ps={};//无参数 Method m=c.getDeclaredMethod("study",ps); Object[] os={}; m.invoke(s); /* Class[] ps={String.class,int.class};//有参数 Method m=c.getDeclaredMethod("study",ps);//说明是哪个方法 Object[] os={"CoreJava",new Integer(3)};//简单类型变成包装类; m.invoke(s,os);*/ }}class Student{ private String name; private int age; public Student(){} public Student(String name,int age){ this.name=name; this.age=age; } public void setName(String name){ this.name=name; } public void setAge(int age){ this.age=age; } public void study(){ System.out.println("Student "+name+" study1"); } public String study(String course,int time){ System.out.println("Student "+name+" studies "+course+" for "+time+" times"); if(time>=3)return "good"; else return "bad"; }}这是我们当时学反射的时候打的代码 属性 方法 构造方法 都有

Java题,求大佬给个源码

public class StudentTest {public static void main(String[] args) {Student student = new Student();student.id = "190351111";student.name = "张三";student.gender = "男";student.age = 19;System.out.println(student.sayHi());}}class Student {public String id;public String name;public String gender;public int age;public String sayHi() {return "大家好, 我叫" + name + ", 学号" + id + ", 性别" + gender + ", 今年" + age + ", 很高兴认识大家!";}}

java 问题 翻译

该接口,你将实施的是一包(或多重集)用于收集 存储一组对象钬攊ncluding重复。 收集,便称之为钬渞械钬袋,因为它有一些其他方法 访问最小,第二小的,和第k -最小项存储在它。你的 执行第1部分: 将实施的RankBagArray类RankBag接口; 将用于存储对象的数组的排序;及 不会使用任何内置的收集与工作对象(与例外 在uniqueSet()方法)。

很急,java定时器问题,出错?

对于贴一大堆错误出来,但是不贴源代码的问题

Java:Executors、Runnable一起使用时如何设置线程名称呢?

不需要你自己知道吧,有点类似匿名内部类的感觉,只调用一次

Java:描述反射机制的作用?举几个反射的应用?

说多多的也没用,我就简单给你介绍几个。既然你学了Java,那么反射就算你不会,你在学习过程中也会经常遇到。1、有了反射机制,那么就能逆向代码了,反编译器就是这个原理。2、像流行的框架,Spring,Hibernate等,就是利用反射机制,要不然怎么可能你配置下文件就完事呢3、动态生成类啊,当然spring里面都用到了。希望我的回答对你有帮助!

java 反射 类的带参数实例化

把参数里面的int改成Integer public Person(String name, Integer age) 这种 /** * 得到带构造的类的实例 * */ public static Object newInstance(String className, Object[] args) throws Exception { Class newoneClass = Class.forName(className); Class[] argsClass = new Class[args.length]; for (int i = 0, j = args.length; i < j; i++) { argsClass[i] = args[i].getClass(); } Constructor cons = newoneClass.getConstructor(argsClass); return cons.newInstance(args); }

java怎样将多个实例化对象放在数组里

Card[] oneCard = new Card[52];for(int i=0; i<52; i++){ oneCard[i] = new Card();}

java:子类对象向上转型为父类实例后,调用的是父类方法,还是子类方法?

调用的是自子类的方法,这就是所谓的多态。比如说class Shape { public void draw() { System.out.println("画一个图形"); }}class Square extends Shape { public void draw() { System.out.println("画一个正方形"); }}在main方法中:public static void main(String[] args) { Shape shape = new Square();// Square向上转型为Shape shape.draw();//输出:画一个正方形。这就是所谓的多态。}

Java问题调用不了sayHi()方法【新手问题最好能讲下】

父类不能调用子类方法

java编程:定义一个矩形类Rectangle

public class Rectangle{ private int width; private int height; public Rectangle(){ this.width = 10; this.height = 10; } public Rectangle(int width, int height){ this.width = width; this.height = height; } public int area(){ return width * height; } //省略getter/setter}

Java定义一个Rectangle类

12345678910111213141516171819202122232425262728293031323334353637383940class Rectangle { private double width; private double height; public Rectangle(double width, double height) { this.width = width; this.height = height; } public double getC() { return (width + height) * 2; } public double getS() { return width * height; } public double getWidth() { return width; } public void setWidth(double width) { this.width = width; } public double getHeight() { return height; } public void setHeight(double height) { this.height = height; }} public class Test { public static void main(String[] args) { Rectangle rect = new Rectangle(4, 5); System.out.println("周长=" + rect.getC() + " 面积=" + rect.getS()); }}

java中的rectangle类的应用

分类: 电脑/网络 >> 程序设计 >> 其他编程语言 问题描述: 创建一个rectangle类,添加width和height两个属性 并在rectangle中添加两种方法计算矩形的周长和面积,并利用rectangle输出一个矩形的周长和面积 解析: public class rectangle(){ public rectangel(){}private double width ; private double height ; 面积 public double getSquare(){ return width*height } 周长 public double getRound(){ return 2*(width+height) } public setWidth(double width){ this.width = width ; } public setHeight(double height){ this.height = height } }

JAVA:定义矩形Rectangle

/*** Project Name:jqueryEasyUiTest* File Name:Rectangle.java* Package Name:* Date:2013年12月30日上午9:46:55**//*** ClassName:Rectangle <br/>* Function: TODO ADD FUNCTION. <br/>* Reason: TODO ADD REASON. <br/>* Date: 2013年12月30日 上午9:46:55 <br/>* @author lenovo* @version* @since JDK 1.6* @see*/public class Rectangle { private int length; private int width; public int getLength() { return length; } public void setLength(int length) { this.length = length; } public int getWidth() { return width; } public void setWidth(int width) { this.width = width; } public Rectangle(int length, int width) { this.length = length; this.width = width; } public int calcArea(){ return this.length * this.width; } public int calcCircum(){ return 2 * (this.length + this.width); } public boolean equals(Rectangle rec) { if( this.calcArea() == rec.calcArea() ){ return true; }else{ return false; } }}

用JAVA创建一个矩形类Rectangle

不懂啊,

java编译通过,但是运行出现问题.

那肯定是逻辑问题

如何用Java进行3DES加密解

何用Java进行3DES加密解,参考链接如下:

des解密算法,利用C语言解密JAVA语言加密的密码。。密钥为12345678,加密后的密文为:26d086be3a3a62fc

网络上 很多人上传的代码可能有问题, 建议你使用linux内核源代码中的关于des的代码,可以联系我

这段JAVA代码转成C# 怎么写?

以下是将 Java 代码转换为 C# 代码的示例:```csharpusing System.Security.Cryptography;using System.Text;// 生成AES密钥public static byte[] GenerateAESKey(string key){KeyGenerator kgen = KeyGenerator.GetInstance("AES");SecureRandom random = SecureRandom.GetInstance("SHA1PRNG");random.SetSeed(Encoding.ASCII.GetBytes(key));kgen.Init(128, random);SecretKey secretKey = kgen.GenerateKey();byte[] enCodeFormat = secretKey.GetEncoded();return enCodeFormat;}// 加密或解密数据public static byte[] EncryptOrDecrypt(byte[] content, byte[] key, int mode){using (AesCryptoServiceProvider aes = new AesCryptoServiceProvider()){aes.KeySize = 128; // 密钥长度aes.BlockSize = 128; // 块大小aes.Mode = CipherMode.ECB; // 加密模式aes.Padding = PaddingMode.PKCS7; // 填充方式aes.Key = key;ICryptoTransform transform = aes.CreateEncryptor();byte[] result = transform.TransformFinalBlock(content, 0, content.Length);return result;}}```需要注意的是,C# 中的 AesCryptoServiceProvider 支持的加密模式和填充方式可能与 Java 中不同,需要根据具体需求进行调整。另外,Java 中的 SHA1PRNG 算法在 C# 中没有对应实现,可以使用其他随机数生成器替代。

java 编译通过,但是在运行时候提示出错。代码如下:

d代码呢?

linux查看java进程命令?

ps -ef | grep java

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -17

数组越界。你里面的TextLen长度和CipherText或者PlainText不一样

java编写小型的局域网邮件发送

..........这个可以参考一下JAVAMAIL的相关知识

如何用JavaScript设置Div的margin参数?

在css中使用margin可以将margin-top, margin-bottom, margin-left, margin-right缩写为一个标记。margin标记可以带一个、二个、三个、四个参数,各有不同的含义。[示例代码]<html><body><div style="border: 1px solid red;"><div style="border: 1px solid blue; margin: 20px;">margin: 20px;上、下、左、右各20px。</div></div><div style="border: 1px solid red;"><div style="border: 1px solid blue; margin: 20px 40px;">margin: 20px 40px;上、下20px;左、右40px。</div></div><div style="border: 1px solid red;"><div style="border: 1px solid blue; margin: 20px 40px 60px;">margin: 20px 40px 60px;上20px;左、右40px;下60px。</div></div><div style="border: 1px solid red;"><div style="border: 1px solid blue; margin: 20px 40px 60px 80px;">

请问使用javascript DOM如何插入空格?

$nbsp;

java 已经获取pdf代码,如何把他pdf文件保存到本机 要求用输出流做

一、iText介绍  iText是着名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。  iText的安装非常方便,只需要在系统的CLASSPATH中加入iText.jar的路径,在程序中就可以使用iText类库了。  二、建立第一个PDF文档  用iText生成PDF文档需要5个步骤:  ①建立com.lowagie.text.Document对象的实例。  Document document = new Document();  ②建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。  PDFWriter.getInstance(document, new FileOutputStream("Helloworld.PDF"));  ③打开文档。  document.open();  ④向文档中添加内容。  document.add(new Paragraph("Hello World"));  ⑤关闭文档。  document.close();  通过上面的5个步骤,就能产生一个Helloworld.PDF的文件,文件内容为"Hello World"。  建立com.lowagie.text.Document对象的实例  com.lowagie.text.Document对象的构建函数有三个,分别是:  public Document();  public Document(Rectangle pageSize);  public Document(Rectangle pageSize,  int marginLeft,  int marginRight,  int marginTop,  int marginBottom);  构建函数的参数pageSize是文档页面的大小,对于第一个构建函数,页面的大小为A4,同Document(PageSize.A4)的效果一样;对于第三个构建函数,参数marginLeft、marginRight、marginTop、marginBottom分别为左、右、上、下的页边距。

java itext 创建pdf,直接返回输出流做成下载,怎么做

public static void create() { try { Document document =new Document(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); PdfWriter.getInstance(document,baos ); document.open(); document.add(new Paragraph("Hello World")); document.close(); byte[] content = baos.toByteArray(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }这是一个用itext创建pdf然后将创建的pdf转变成byte【】的方法,你看合适不,不合适的话m我,我帮你改code

javascript 如何获得padding 与margin

<div id=a style="padding:12px; margin:16px">12345</div><script>alert(document.getElementById("a").style.paddingLeft);alert(document.getElementById("a").style.marginLeft);</script>

如何用JavaScript设置Div的margin参数?

obj.style.margin = "0px";obj代表你要加margin的标签

java难题。。。。。。。

那得 java里面有那个字体才行 自己查 API 看有那些字体

我用java做了个swing界面,怎么实现播放MP3格式的背景音乐

import java.awt.Graphics;import java.applet.Applet;class Sound extends Applet{ public void paint(Graphics g){ play(getDocumentBase(),"music.wav");}//播放当前目录下的一月文件;}我的QQ1162856902

java Node next是什么意思

北漂的心酸,公众号,最新node.js从入门到精通及服务器搭建课程

如何在的href属性中传递两个Java参数

<% String Email=request.getParameter("Email"); %>

java生成xml后毫无格式 求高手指点 代码如下 // 创建根节点

你应该用的jar是jdom吧.一下是格式化方法.XMLOutputter XMLOut = new XMLOutputter(FormatXML());public Format FormatXML(){ //格式化生成的xml文件,如果不进行格式化的话,生成的xml文件将会是很长的一行... Format format = Format.getCompactFormat(); format.setEncoding("utf-8"); format.setIndent(" "); return format; }

java 400 bad request怎么解决

我的解决办法就是把实体类的javabean里边的类型都改成string类型了,在配置SQL语句时用数据库函数to_date或者to_number转化的,如果再java中用到这个字符串类型的日期的话,有必要的话,就用For format=new 。

如何在 Java 中正确使用 wait,notify 和 notifyAll

wait, notify 和 notifyAll,这些在多线程中被经常用到的保留关键字,在实际开发的时候很多时候却并没有被大家重视。本文对这些关键字的使用进行了描述。在 Java 中可以用 wait、notify 和 notifyAll 来实现线程间的通信。。举个例子,如果你的Java程序中有两个线程——即生产者和消费者,那么生产者可以通知消费者,让消费者开始消耗数据,因为队列缓冲区中有内容待消费(不为空)。相应的,消费者可以通知生产者可以开始生成更多的数据,因为当它消耗掉某些数据后缓冲区不再为满。我们可以利用wait()来让一个线程在某些条件下暂停运行。例如,在生产者消费者模型中,生产者线程在缓冲区为满的时候,消费者在缓冲区为空的时候,都应该暂停运行。如果某些线程在等待某些条件触发,那当那些条件为真时,你可以用 notify 和 notifyAll 来通知那些等待中的线程重新开始运行。不同之处在于,notify 仅仅通知一个线程,并且我们不知道哪个线程会收到通知,然而 notifyAll 会通知所有等待中的线程。换言之,如果只有一个线程在等待一个信号灯,notify和notifyAll都会通知到这个线程。但如果多个线程在等待这个信号灯,那么notify只会通知到其中一个,而其它线程并不会收到任何通知,而notifyAll会唤醒所有等待中的线程。在这篇文章中你将会学到如何使用 wait、notify 和 notifyAll 来实现线程间的通信,从而解决生产者消费者问题。如果你想要更深入地学习Java中的多线程同步问题,我强烈推荐阅读Brian Goetz所著的《Java Concurrency in Practice | Java 并发实践》,不读这本书你的 Java 多线程征程就不完整哦!这是我最向Java开发者推荐的书之一。如何使用Wait尽管关于wait和notify的概念很基础,它们也都是Object类的函数,但用它们来写代码却并不简单。如果你在面试中让应聘者来手写代码,用wait和notify解决生产者消费者问题,我几乎可以肯定他们中的大多数都会无所适从或者犯下一些错误,例如在错误的地方使用 synchronized 关键词,没有对正确的对象使用wait,或者没有遵循规范的代码方法。说实话,这个问题对于不常使用它们的程序员来说确实令人感觉比较头疼。第一个问题就是,我们怎么在代码里使用wait()呢?因为wait()并不是Thread类下的函数,我们并不能使用 Thread.call()。事实上很多Java程序员都喜欢这么写,因为它们习惯了使用Thread.sleep(),所以他们会试图使用wait()来达成相同的目的,但很快他们就会发现这并不能顺利解决问题。正确的方法是对在多线程间共享的那个Object来使用wait。在生产者消费者问题中,这个共享的Object就是那个缓冲区队列。第二个问题是,既然我们应该在synchronized的函数或是对象里调用wait,那哪个对象应该被synchronized呢?答案是,那个你希望上锁的对象就应该被synchronized,即那个在多个线程间被共享的对象。在生产者消费者问题中,应该被synchronized的就是那个缓冲区队列。(我觉得这里是英文原文有问题……本来那个句末就不应该是问号不然不太通……)永远在循环(loop)里调用 wait 和 notify,不是在 If 语句现在你知道wait应该永远在被synchronized的背景下和那个被多线程共享的对象上调用,下一个一定要记住的问题就是,你应该永远在 while循环,而不是if语句中调用wait。因为线程是在某些条件下等待的——在我们的例子里,即“如果缓冲区队列是满的话,那么生产者线程应该等 待”,你可能直觉就会写一个if语句。但if语句存在一些微妙的小问题,导致即使条件没被满足,你的线程你也有可能被错误地唤醒。所以如果你不在线程被唤醒后再次使用while循环检查唤醒条件是否被满足,你的程序就有可能会出错——例如在缓冲区为满的时候生产者继续生成数据,或者缓冲区为空的时候消费者开始小号数据。所以记住,永远在while循环而不是if语句中使用wait!我会推荐阅读《Effective Java》,这是关于如何正确使用wait和notify的最好的参考资料。基于以上认知,下面这个是使用wait和notify函数的规范代码模板:// The standard idiom for calling the wait method in Java synchronized (sharedObject) { while (condition) { sharedObject.wait(); // (Releases lock, and reacquires on wakeup) } // do action based upon condition e.g. take or put into queue } 就像我之前说的一样,在while循环里使用wait的目的,是在线程被唤醒的前后都持续检查条件是否被满足。如果条件并未改变,wait被调用之前notify的唤醒通知就来了,那么这个线程并不能保证被唤醒,有可能会导致死锁问题。Java wait(), notify(), notifyAll() 范例下面我们提供一个使用wait和notify的范例程序。在这个程序里,我们使用了上文所述的一些代码规范。我们有两个线程,分别名为 PRODUCER(生产者)和CONSUMER(消费者),他们分别继承了了Producer和Consumer类,而Producer和 Consumer都继承了Thread类。Producer和Consumer想要实现的代码逻辑都在run()函数内。Main线程开始了生产者和消费者线程,并声明了一个LinkedList作为缓冲区队列(在Java中,LinkedList实现了队列的接口)。生产者在无限循环中持续往 LinkedList里插入随机整数直到LinkedList满。我们在while(queue.size == maxSize)循环语句中检查这个条件。请注意到我们在做这个检查条件之前已经在队列对象上使用了synchronized关键词,因而其它线程不能在我们检查条件时改变这个队列。如果队列满了,那么PRODUCER线程会在CONSUMER线程消耗掉队列里的任意一个整数,并用notify来通知 PRODUCER线程之前持续等待。在我们的例子中,wait和notify都是使用在同一个共享对象上的。

如何在 Java 中正确使用 wait,notify 和 notifyAll

  在 Java 中可以用 wait、notify 和 notifyAll 来实现线程间的通信。如果你的Java程序中有两个线程——即生产者和消费者,那么生产者可以通知消费者,让消费者开始消耗数据,因为队列缓冲区中有内容待消费(不为空)。相应的,消费者可以通知生产者可以开始生成更多的数据,因为当它消耗掉某些数据后缓冲区不再为满。  1、使用Wait和notify  尽管关于wait和notify的概念很基础,它们也都是Object类的函数,但用它们来写代码却并不简单。如果在面试中让应聘者来手写代码, 用wait和notify解决生产者消费者问题,大多数都会无所适从或者犯下一些错误,例如在错误的地方使用 synchronized 关键词,没有对正确的对象使用wait,或者没有遵循规范的代码方法。说实话,这个问题对于不常使用它们的程序员来说确实令人感觉比较头疼。  第一个问题就是,怎么在代码里使用wait()呢?因为wait()并不是Thread类下的函数,并不能使用 Thread.call()。事实上很多Java程序员都喜欢这么写,因为习惯了使用Thread.sleep(),所以会试图使用wait() 来达成相同的目的,但很快就会发现这并不能顺利解决问题。正确的方法是对在多线程间共享的那个Object来使用wait。在生产者消费者问题中,这 个共享的Object就是那个缓冲区队列。  第二个问题是,既然应该在synchronized的函数或是对象里调用wait,那哪个对象应该被synchronized呢?答案是,那个 希望上锁的对象就应该被synchronized,即那个在多个线程间被共享的对象。在生产者消费者问题中,应该被synchronized的就是那个缓冲区队列。  2、永远在循环(loop)里调用 wait 和 notify,不是在 If 语句。  现在wait永远在被synchronized的背景下和那个被多线程共享的对象上调用,下一个一定要记住的问题就是,应该永远在 while循环,而不是if语句中调用wait。因为线程是在某些条件下等待的——在例子里,即“如果缓冲区队列是满的话,那么生产者线程应该等 待”,可能直觉就会写一个if语句。但if语句存在一些微妙的小问题,导致即使条件没被满足,线程也有可能被错误地唤醒。所以如果不在线程被唤醒后再次使用while循环检查唤醒条件是否被满足,程序就有可能会出错——例如在缓冲区为满的时候生产者继续生成数据,或者缓冲区为空的时候消费者 开始小号数据。所以记住,永远在while循环而不是if语句中使用wait!  3、如果条件并未改变,wait被调用之前notify的唤醒通知就来了,那么这个线程并不能保证被唤醒,有可能会导致死锁问题。

Java里面 notify不被执行的原因可能有哪些?

个人建议别用notify来做东西,你可以用lock和unlock来做锁,比notify好用

java中的notify和notifyAll有什么区别

notify是唤醒某个线程,而notifyAll是唤醒所有暂停线程

JAVA中的Wait()和notify()方法使用时应注意些什么?

Wait()和notify():如果条件不满足,则等待。当条件满足时,等待该条件的线程将被唤醒。一般用在synchronized机制中例如:线程Asynchronized(obj) {while(!condition) {obj.wait();}obj.doSomething();} 当线程A获得了obj锁后,发现条件condition不满足,无法继续下一处理,于是线程A就wait()。在另一线程B中,如果B更改了某些条件,使得线程A的condition条件满足了,就可以唤醒线程A:线程Bsynchronized(obj) {condition = true;obj.notify();}需要注意的概念是:  ◆调用obj的wait(), notify()方法前,必须获得obj锁,也就是必须写在synchronized(obj) {……} 代码段内。  ◆调用obj.wait()后,线程A就释放了obj的锁,否则线程B无法获得obj锁,也就无法在synchronized(obj) {……} 代码段内唤醒A.  ◆当obj.wait()方法返回后,线程A需要再次获得obj锁,才能继续执行。  ◆如果A1,A2,A3都在obj.wait(),则B调用obj.notify()只能唤醒A1,A2,A3中的一个(具体哪一个由JVM决定)。  ◆obj.notifyAll()则能全部唤醒A1,A2,A3,但是要继续执行obj.wait()的下一条语句,必须获得obj锁,因此,A1,A2,A3只有一个有机会获得锁继续执行,例如A1,其余的需要等待A1释放obj锁之后才能继续执行。  ◆当B调用obj.notify/notifyAll的时候,B正持有obj锁,因此,A1,A2,A3虽被唤醒,但是仍无法获得obj锁。直到B退出synchronized块,释放obj锁后,A1,A2,A3中的一个才有机会获得锁继续执行。

如何在 Java 中正确使用 wait,notify 和 notifyAll

线程通信,很简单啊,先去看一下消费者和生产者的例子

java并发,notify无法唤醒wait

wait是什么意思

java中notify怎么使用?

写成this.notify()也不行吗
 首页 上一页  47 48 49 50 51 52 53 54 55 56 57  下一页  尾页