相关疑难解决方法(0)

如何从文件内容创建Java字符串?

我一直在使用下面的成语一段时间了.它似乎是最广泛的,至少在我访问过的网站上.

是否有更好/不同的方式将文件读入Java中的字符串?

private String readFile(String file) throws IOException {
    BufferedReader reader = new BufferedReader(new FileReader (file));
    String         line = null;
    StringBuilder  stringBuilder = new StringBuilder();
    String         ls = System.getProperty("line.separator");

    try {
        while((line = reader.readLine()) != null) {
            stringBuilder.append(line);
            stringBuilder.append(ls);
        }

        return stringBuilder.toString();
    } finally {
        reader.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

java string io file-io file

1440
推荐指数
18
解决办法
132万
查看次数

将文件读入String的最简单方法是什么?

我试图将一个简单的文本文件读入一个字符串.当然,通常的方法是获取输入流并使用readLine()进行迭代并将内容读入String.

在过去做过数百次之后,我只是想知道如何在最少的代码行中做到这一点?是不是像java这样的东西String fileContents = XXX.readFile(myFile/*File*/)......而是看起来像这样简单的东西?

我知道像Apache Commons IO这样的库提供了这样的简化,甚至我可以编写一个简单的Util类来实现这一点.但我想知道的是 - 这是一个如此频繁的操作,每个人都需要为什么Java不提供这么简单的功能呢?是不是真的有一个方法可以使用某些默认或指定的编码将文件读入字符串?

java file-io file

256
推荐指数
8
解决办法
44万
查看次数

如何从资源文件夹加载文件?

我的项目有以下结构:

/src/main/java/
/src/main/resources/
/src/test/java/
/src/test/resources/
Run Code Online (Sandbox Code Playgroud)

我有一个文件,/src/test/resources/test.csv我想从单元测试加载文件/src/test/java/MyTest.java

我有这个代码不起作用.它抱怨"没有这样的文件或目录".

BufferedReader br = new BufferedReader (new FileReader(test.csv))
Run Code Online (Sandbox Code Playgroud)

我也尝试过这个

InputStream is = (InputStream) MyTest.class.getResourcesAsStream(test.csv))
Run Code Online (Sandbox Code Playgroud)

这也行不通.它回来了null.我正在使用Maven来构建我的项目.

java file maven

211
推荐指数
9
解决办法
34万
查看次数

Utils将资源文本文件读取为String(Java)

是否有任何实用程序可以帮助将资源中的文本文件读入String.我想这是一个很受欢迎的要求,但谷歌搜索后我找不到任何实用程序.

java string resources text

200
推荐指数
11
解决办法
19万
查看次数

如何为android单元测试提供数据文件

我正在开发使用Android的java.xml.parsers.DocumentBuilder和DocumentBuilderFactory实现从XML文件加载信息的软件.我正在编写我的对象的单元测试,我需要能够提供各种xml文件来运行测试中的代码.我正在使用Eclipse并拥有一个单独的Android测试项目.我找不到将测试xml放入测试项目的方法,以便测试中的代码可以打开文件.

  • 如果我将文件放在测试项目的/ assets中,则测试中的代码无法看到它.
  • 如果我把文件放在被测代码的/ assets中,它当然可以看到文件,但现在我把我的实际系统弄得乱七八糟的只有测试数据文件.
  • 如果我将文件复制到/ sdcard/data目录,我可以从被测试的代码中打开它们,但这会干扰我的测试自动化.

任何关于如何让不同的xml测试文件驻留在测试包中但对被测试代码可见的建议将不胜感激.

以下是我尝试构建单元测试的方法:

public class AppDescLoaderTest extends AndroidTestCase
{
  private static final String SAMPLE_XML = "sample.xml";

  private AppDescLoader       m_appDescLoader;
  private Application         m_app;

  protected void setUp() throws Exception
  {
    super.setUp();
    m_app = new Application();
    //call to system under test to load m_app using
    //a sample xml file
    m_appDescLoader = new AppDescLoader(m_app, SAMPLE_XML, getContext());
  }

  public void testLoad_ShouldPopulateDocument() throws Exception
  {
    m_appDescLoader.load();

  }    
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为SAMPLE_XML文件位于测试的上下文中,但AndroidTestCase正在为被测系统提供上下文,该系统无法从测试包中看到资产.

这是每个答案给出的修改后的代码:

public class AppDescLoaderTest extends InstrumentationTestCase
{
   ...
  protected void setUp() …
Run Code Online (Sandbox Code Playgroud)

xml android unit-testing junit3

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

40
推荐指数
3
解决办法
6万
查看次数

如何在java中将文件读入字符串?

我已经将文件读入String.该文件包含各种名称,每行一个名称.现在的问题是我想在String数组中使用这些名称.

为此我写了以下代码:

String [] names = fileString.split("\n"); // fileString is the string representation of the file
Run Code Online (Sandbox Code Playgroud)

但是我没有得到所需的结果,并且在分割字符串后获得的数组长度为1.这意味着"fileString"没有"\n"字符,但文件中有"\n"字符.

那么如何解决这个问题呢?

java

27
推荐指数
6
解决办法
9万
查看次数

Spring Boot Test MalformedURLException:未知协议:classpath

如果java.net.URL在Spring Boot应用程序中使用,使用classpath协议,它会按预期工作,因为Spring Boot注册URLStreamHandlerFactory.例如new URL("classpath: someFile.whatever").

但是当执行此代码时,java.net.MalformedURLException: unknown protocol: classpath将抛出JUnit测试异常.

URLStreamHandlerFactory在为JUnit测试初始化​​Spring上下文时,似乎没有注册适当的.

重现步骤:

1)创建Spring Boot Starter项目(例如,仅使用入门Web).

2)添加test.json文件src/main/resources

3)添加以下bean:

@Component
public class MyComponent {
    public MyComponent() throws MalformedURLException {
        URL testJson = new URL("classpath: test.json");
        System.out.println(testJson);
    }
}
Run Code Online (Sandbox Code Playgroud)

4)启动应用程序作为Java应用程序工作正常

5)运行默认的"contextLoads"测试:

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringUrlTestApplicationTests {

    @Test
    public void contextLoads() {
    }

}
Run Code Online (Sandbox Code Playgroud)

java.net.MalformedURLException: unknown protocol: classpath抛出异常.

在JUnit测试中使用URL与classpath资源的合适方法是什么?

在真实的用例中,我无法改变new URL("classpath: test.json")它,因为它来自第三方库.

试图复制test.json中src/test/resources,以测试是否错误可能由缺少的资源造成的-没有成功.

java junit spring spring-test spring-boot

8
推荐指数
1
解决办法
1599
查看次数

标签 统计

java ×7

file ×3

file-io ×2

string ×2

android ×1

io ×1

junit ×1

junit3 ×1

maven ×1

resources ×1

spring ×1

spring-boot ×1

spring-test ×1

text ×1

unit-testing ×1

xml ×1